1. 程式人生 > >Java 中>>和>>>的區別

Java 中>>和>>>的區別

Java中的位運算子:

 >>表示右移,如果該數為正,則高位補0,若為負數,則高位補1;
 >>>表示無符號右移,也叫邏輯右移,即若該數為正,則高位補0,而若該數為負數,則右移後高位同樣補0。

表示式為:
result = exp1 >> exp2;
result = exp2 >>> exp2;
表示把數exp1向右移動exp2位。
例如:
res = 20 >> 2;
20的二進位制為 0001 0100,右移2位後為 0000 0101,則結果就為 res = 5;
res = -20 >> 2;
-20的二進位制為其正數的補碼加1,即 1110 1011,右移2位後為 1111 1100,結果為 res = -6;
而對於>>>符號而言:
res = 20 >>> 2; 的結果與 >> 相同;
res = -20 >>> 2;
-20的二進位制為 1110 1011,右移2位,此時高位補0,即 0011 1010,結果為 res = 58;
補充:
<< 是與>>對應的左移運算子,表示將exp1向左移動exp2位,在低位補0。其實,向左移動n位,就相當於乘以2^n。
左移沒有<<<運算子!