java中移位运算符<<、>>和>>>的区别

移位运算符是在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:<<(左移)、>>(带符号右移)和>>>(无符号右移)。

以下是3种的区别以及举例,因为负数比较特殊,所以此处举例都使用-1分别移动10位的情况来举例。

<<左移

按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零

11111111111111111111111111111111
11111111111111111111110000000000


>>右移

按二进制形式把所有的数字向右移动对应位移位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。

11111111111111111111111111111111
11111111111111111111111111111111


>>>无符号右移

按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补零。对于正数来说和带符号右移相同,对于负数来说不同。

11111111111111111111111111111111
00000000001111111111111111111111

觉得内容还不错?打赏个钢镚鼓励鼓励!!👍