java提供两种右移运算符,属于位运算符。位运算符用来对二进制位进行操作。
>> :算术右移运算符,也称带符号右移。用最高位填充移位后左侧的空位。
>>>:逻辑右移运算符,也称无符号右移。只对位进行操作,用0填充左侧的空位。
表达式为:
r = e1 >> e2;
r = e1 >>> e2;
表示把数e1向右移动e2位。
运算规则:
>> :按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。符号位不变。
>>>:按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补零。对于正数来说和带符号右移相同,对于负数来说不同。
按上一篇,-1在32位二进制中表示为:
11111111 11111111 11111111 11111111
-1>>1:按位右移,符号位不变,仍旧得到
11111111 11111111 11111111 11111111
因此值仍为-1
而-1>>>1的结果为 01111111 11111111 11111111 11111111
原文地址:https://www.cnblogs.com/mithrandirw/p/8670859.html
时间: 2024-10-28 01:15:10