java 有三種移位運算符操作 分别是 >>(有符号右移) ,>>>(無符号右移) 和<<(左移) ,下面分别對這三種操作需要注意的地方做個簡單的說明:
1、>> :
num>>1 的意思是符号位不變,丢棄最低位 左邊補符号位
舉例: 2>>1 等于1 , -2>>1等于-1
2、 >>>
num>>>1的意思是丢棄最低位高位補0
舉例:2>>>1 等于1 ,-2147483648(int類型的最大值,最高位符号位為1)>>>1 等于1073741824
注意:在用>>>右移是一定注意負數的情況
3、<<
num<<1 的意思丢棄最高位 低位補0
舉例 :1<<1 的意思是将num的二進制代碼整體向左移動一位(即等于乘2操作)。-1<<1 等于-2
注意:如果移動的位數超過了該類型的最大位數,編譯器會對其進行取模操作 例 1<<33 等于1<<1
如果移進符号位 則會引起符号位變化 例 1<<31等于 -2147483648