(1)按位與運算 &
1 & 1 = 1, 0 & 1 = 0
51 & 5 即 0011 0011 & 0000 0101 =0000 0001 = 1;
(2)按位或運算 |
1 | 0 = 1,1|1 =1, 0|0 =0
51 | 5 即 0011 0011 | 0000 0101 =0011 0111 =55;
(3)異或運算 ^
1 ^ 1 = 0,1 ^ 0 = 1 ,0^ 0 = 0(兩個位的值不同,則結果為1,相同結果為0)
51 ^ 5 即 0011 0011 ^0000 0101 =0011 0110=54;
(4)<<左移運算符
1.將一個運算對象的各二進制位全部左移若干位(左邊的二進制丟棄,右邊補0)
(注意:java中 整數位 32位)
11 << 2 = 44
-14 <<2 =-56
-14的二進制(11111111 11111111 11111111 11110010)左移2位
為 11111111 11111111 11111111 11001000
結果為(-56)(后面講述負數在二進制中如何表示的)
(5)>>右移運算符
將一個運算對象的各二進制位全部右移若干位,正數左補0,負數左補1.
4 >> 2 = 1;
-14 >> 2 = -4;
(6)~按位取反
~6 = -7
(7)>>>無符號右移運算符
二進制各個位向右移指定的位數,右移后左邊空出來的位用零來填充,移出右邊的位被丟棄。
-14 >>> 2 =11111111 11111111 11111111 11110010 => 00111111 11111111 11111111 11111100 =1073741820
(8)<<<無符號左移運算符
二進制各個位向左移指定的位數,左移后右邊空出來的位用零來填充,移出左邊的位被丟棄。
3 <<< 1 = 6
(9)二進制中負數的計算
負數以正數的補碼表示
原碼:一個整數按照絕對值的大小轉化成二進制的數
反碼:將二進制數按位取反
補碼:反碼加 1
以-14 舉例
原碼:14 即 00000000 00000000 00000000 00001110
反碼: 11111111 11111111 11111111 11110001
補碼: 11111111 11111111 11111111 11110010
所以-14 的二進制是 11111111 11111111 11111111 11110010
假設 我們得到 二進制讓我們求整數 就是倒着來取相反數
如二進制是 11111111 11111111 11111111 11110010
得到反碼減1 11111111 11111111 11111111 11110001
原碼: 00000000 00000000 00000000 00001110
即 1110 = 14 所以取反 就是-14