天天看点

java移位运算符(>>> >> <<)总结

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

继续阅读