Java移位运算符>>和无符号右移运算符>>>的区别

Java 移位运算符是一个二元运算符,用来将一个二进制数中的每一位全部都向一个方向移动指定位,溢出的部分将被舍弃,而空缺的部分填入一定的值。
左移使用两个小于符号”<<“表示,右移使用两个大于符号”>>”表示。
应用逻辑移位时,移位后空缺的部分全部填0。原码为整数,补码为负数,补码=反码+1。

无符号右移指的是,右移后前面补零,如:
-1的补码为11111111111111111111111111111111,>>>2=0011111111111111111111111111111111。

最高位 1表示负数,0表示整数。

>> 符号右移时,对于正数,高位补0,对于负数,高位补1。
>>>无符号右移,长度扩展为4字节,最高位都为0,但正数扩展位补0,负数扩展位补1。

   0001(十进制1)
<<    3(左移3位)
 = 1000(十进制8)

    1010(十进制10)
>>    2(右移2位)
 = 0010(十进制2)

 1010           原始数         number
10100           左移一位       number = number << 1;
 1010           右移一位       number = number >> 1;

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注