int型是4字節32位(Java中)
位運算符 : &,|,~,^,<<,>>,>>>
"&" 按位與,計算時將 十進制 轉爲 二進制 再進行計算,同位置爲1,則結果爲1,其餘情況皆爲0
3: 00000000 00000000 00000000 00000011
6: 00000000 00000000 00000000 00000110
3&6: 00000000 00000000 00000000 00000010
"|" 按位或,計算時將 十進制 轉爲 二進制 再進行計算,同位置爲0的結果爲0,其餘情況皆爲1
3: 00000000 00000000 00000000 00000011
6: 00000000 00000000 00000000 00000110
3|6: 00000000 00000000 00000000 00000111
"~" 按位取反,將二進制下所有爲0的數換位1,爲1的都換位0
3: 00000000 00000000 00000000 00000011
~3: 11111111 11111111 11111111 11111100
"^" 按位異或,只有0和1的時候爲1,0和0爲0,1和1也爲0
3: 00000000 00000000 00000000 00000011
6: 00000000 00000000 00000000 00000110
3^6: 00000000 00000000 00000000 00000101
"<<" 左移運算,a<<b,將a轉爲二進制後左移b爲,地位補0
3: 00000000 00000000 00000000 00000011
3<<1: 0 00000000 00000000 00000000 00000110
3<<6: 000000 00000000 00000000 00000000 11000000
">>" 右移運算,a>>b,將a轉爲二進制後向右移b位,高位補0,負數時高位補1
3: 00000000 00000000 00000000 00000011
3>>6: 00000000 00000000 00000000 00000000 000011
3>>1: 00000000 00000000 00000000 00000001 1
">>>"無符號右移運算,a>>>b,將a轉爲二進制,向右移b位,低位去掉,高位不管是0還是1都補0
-4: 11111111 11111111 11111111 11111100
-4>>>4: 00001111 11111111 11111111 11111111 1100
二進制下負數的表示:這個數的反碼加1
5: 00000000 00000000 00000000 00000101
5的反碼: 11111111 11111111 11111111 11111010
-5: 11111111 11111111 11111111 11111011
代碼測試:
//10: 00000000 00000000 00000000 00001010
//10>>1: 00000000 00000000 00000000 00000101
System.out.println(3&6);
System.out.println(3|6);
//3: 00000000 00000000 00000000 00000011
//~3: 11111111 11111111 11111111 11111100
//4: 00000000 00000000 00000000 00000100
//4反碼: 11111111 11111111 11111111 11111011
//-4: 11111111 11111111 11111111 11111100
System.out.println(~3);
System.out.println(3^6);
System.out.println(3>>6);
System.out.println(3>>1);
System.out.println(-4>>>4);
運行結果: