<< 表示左移,不分正負數,低位補0
>> 表示右移,如果該數爲正,則高位補0,若爲負數,則高位補1
>>> 表示無符號右移,也叫邏輯右移,即若該數爲正,則高位補0,而若該數爲負數,則右移後高位同樣補0
實例:
System.out.println("8 << 2 : " + (8 << 2));
System.out.println("-8 << 2 : " + (-8 << 2));
System.out.println("8 >> 2 : " + (8 >> 2));
System.out.println("-8 >> 2 : " + (-8 >> 2));
System.out.println("8 >>> 2 : " + (8 >>> 2));
System.out.println("-8 >>> 2 : " + (-8 >>> 2));
System.out.println("1 >> 1 : " + (1 >> 1));
System.out.println("8 >> 10 : " + (8 >> 10));
控制檯打印:
8 << 2 : 32
-8 << 2 : -32
8 >> 2 : 2
-8 >> 2 : -2
8 >>> 2 : 2
-8 >>> 2 : 1073741822
1 >> 1 : 0
8 >> 10 : 0
由上我們可以看出,<< x可以理解爲乘以x個2,>>可以理解爲除以x個2。而>>>爲無符號位移,爲正數時和>>一致;爲負數時,開頭代表着負數的1也被移動。