區別
符號說明
>>>
無符號右移,無論是正數還是負數,右移後都是左補0
>>
有符號右移,左邊第一位是1則補1,左邊第一位是0則補0
<<
左移,左移時皆為右補0
示例code
public static void main(string args)
輸出結果
過程說明原值為:-8
原址無符號右移1位:2147483644
原址帶符號右移1位:-4
原值二進位制為:11111111111111111111111111111000
原址無符號右移1位二進位制為:1111111111111111111111111111100
原址帶符號右移1位二進位制為:11111111111111111111111111111100
十進位制8轉化為2進製:
0000 0000 0000 0000 0000 0000 0000 1000
十進位制-8轉化為二進位制,採用 補碼方式,即在+8的二進位制的基礎上 按位取反,末位+1:
先取反:
1111 1111 1111 1111 1111 1111 1111 0111
再加1,得到-8的二進位製碼值:
1111 1111 1111 1111 1111 1111 1111 1000
-8 無符號右移1位 ,-8 >>> 1 :
0111 1111 1111 1111 1111 1111 1111 1100
^所得值轉化為十進位制為: 2147483644
-8 帶符號右移1位,-8 >> 1 :
1111 1111 1111 1111 1111 1111 1111 1100
^所得值轉化為十進位制位: -4
JAVA移位運算子
移位運算子就是在二進位制的基礎上對數字進行平移。按照平移的方向和填充數字的規則分為三種 左移 帶符號右移 和 無符號右移 在移位運算時,byte short和char型別移位後的結果會變成int型別,對於byte short char和int進行移位時,規定實際移動的次數是移動次數和32的餘數,也就...
JAVA移位運算子
移位運算子就是在二進位制的基礎上對數字進行平移。按照平移的方向和填充數字的規則分為三種 左移 帶符號右移 和 無符號右移 在移位運算時,byte short和char型別移位後的結果會變成int型別,對於byte short char和int進行移位時,規定實際移動的次數是移動次數和32的餘數,也就...
JAVA移位運算子
移位運算子就是在二進位制的基礎上對數字進行平移。按照平移的方向和填充數字的規則分為三種 左移 帶符號右移 和 無符號右移 在移位運算時,byte short和char型別移位後的結果會變成int型別,對於byte short char和int進行移位時,規定實際移動的次數是移動次數和32的餘數,也就...