java中的左移、右移移位運算子:<<,>>,>>>
阿新 • • 發佈:2018-11-01
java中有三種移位運算子
<< : 左移運算子,num << 1,相當於num乘以2
>> : 右移運算子,num >> 1,相當於num除以2
>>> : 無符號右移,忽略符號位,空位都以0補齊
注意:無符號右移的規則只記住一點:忽略了符號位擴充套件,0補最高位 無符號右移運算子>>> 只是對32位和64位的值有意義
<<表示左移,如果該數為正,則低位補0,若為負數,則低位補0;
>>表示右移,如果該數為正,則高位補0,若為負數,則高位補1;
public static void main(String args[]) { int n = 18; System.out.println("原始正數------>" + Integer.toBinaryString(n)); System.out.println("正數左移------>" + Integer.toBinaryString(n<<2));//低位補0,移動n位,乘以2的n次冪 System.out.println("正數右移------>" + Integer.toBinaryString(n>>2));//高位補0,移動n位,除以2的n次冪 System.out.println("正數無符號右移-->" + Integer.toBinaryString(n>>>2));//與>>結果相同 System.out.println("原始負數------>" + Integer.toBinaryString(-n)); System.out.println("負數左移------>" + Integer.toBinaryString(-n<<2));//低位補0 System.out.println("負數右移------>" + Integer.toBinaryString(-n>>2));//高位補1 System.out.println("負數無符號右移-->" + Integer.toBinaryString(-n>>>2));//無符號右移,忽略符號位,高位都以0補齊 }
執行結果:
原始正數------>10010
正數左移------>1001000
正數右移------>100
正數無符號右移-->100
原始負數------>11111111111111111111111111101110
負數左移------>11111111111111111111111110111000
負數右移------>11111111111111111111111111111011
負數無符號右移-->111111111111111111111111111011