无符号右移( >>> )

我们知道在Javaint类型占32位,可以表示一个正数,也可以表示一个负数。正数换算成二进制后的最高位为0,负数的二进制最高1

例如  -5换算成二进制后为:

1111 1111 1111 1111 1111 1111 1111 1011

对其进行无符号右移2位:

移位过程讲解:

-5换算成二进制: 1111 1111 1111 1111 1111 1111 1111 1011

-5右移3位后结果为-1-1的二进制为:  1111 1111 1111 1111 1111 1111 1111 1111   // (1进行补位)

-5无符号右移3位后的结果 536870911 换算成二进制:  0001 1111 1111 1111 1111 1111 1111 1111

通过其结果转换成二进制后,我们可以发现,正数右移,高位用0补,负数右移,高位用1补,当负数使用无符号右移时,用0进行部位(自然而然的,就由负数变成了正数了)

注意:这里说的是右移,高位补位的情况。正数或者负数左移,低位都是用0补。(自行测试)

原文地址:https://www.cnblogs.com/yhcTACK/p/15361116.html