1.a+b spa
1 + 3
1:0001
3:0011
4: 0100
1|3:0011=3
無進位時a|b = a +b
有進位則不成立對象
計算思路:使用異或運算【不進位加法】忽略有進位的位置,再加上應該有的進位的位置。
因此咱們能夠這樣:若是咱們忽略有進位的位置後,再加上應該進位的位置,就是咱們的值。
1 ^ 3: 0010 =3; 忽略進位
加上進位:0010
0010 ^ 0010:0000 忽略進位
再加上進位:0100
0000^0100:0100=4二進制
0000&0100 爲-0,沒有須要繼續進位d3
直到 沒有應該進位的,最後結果即爲返回值。計算機
延伸:co
位運算符: d3
| 按位或運算background
& 按位與運算符位運算
^ 異或運算運算符
~取反運算
<< 左移運算符 將一個運算對象的各二進制所有進行左移若干位(左邊的二進制進行丟棄,右邊補0),操做數每左移一位,至關於x2
>>右移運算符 將一個運算對象的各二進制所有進行右移若干位(正數左補0,負數左補1,右邊丟棄),操做數每右移一位,至關於 /2
原碼 反碼 補碼
求一個負數的二進制: 1.該負數的正數的二進制取反,而後加1。記爲這個負數的二進制。
求 -14 >>2 的值
1. -14的二進制: 14的二進制取反,加一 獲得 1111 0010
2.右移2位: 1111 1100
3.1111 1100 的值爲: 1111 1100 原碼爲 【1111 1100 先取反 1000 0011 在加 1 1000 0100】1000 0100,數值爲-4
在計算機中 二進制使用 補碼錶示。 補碼的補碼即爲原碼