Java中的移位运算符
1.三种移位运算符
-
左移:<<
-
右移:>>
-
无符号右移:>>>
-
注:无符号右移表示最高位补零,由于负数在计算机中存储是补码形式(反码+1)
2.案例
-
-15在计算机中存储是ffff,fff1【-15原码为8000,1111(最高位为符号位),取反加1得ffff,fff1(操作时符号位不变)】
-
正常右移带符号位为ffff,fffc【还原成原码也是取反加一(符号位不变)8000,0003=-3】
-
无符号右移为3fff,fffc【符号位一起右移两位,多出来的两个最高位补0的3fff,fffc= 1073741820】
public class TestDemo { public static void main(String[] args) { int i1 = -15 >> 2; int i2 = -15 >>> 2; System.out.println(i1); System.out.println(i2); System.out.println(Integer.toHexString(i1)); System.out.println(Integer.toHexString(i2)); } }