java位运算>>>负位运算

请教大神
-100 >>> -1
-100 >>> 1
如何计算的

2个回答

【负数最高位为1,正数为0】

【-10转换为二进制数:
10转为2进制数--> 1010 --求反--> 0101 --加1--> 0110 --补位--> 1***1 0110
-10转换为二进制数:1111111111111111111111111111111111111111111111111111111111110110】


【左移也就是所说的逻辑移位,右端补0,而右移是算数移位,左端补齐的是最高位的符号位。
故负数左移,有可能变成正数,但负数右移,肯定还是负数。(不能移动负数eg:>>-1)】

【举个例子说明一下运算过程
-100
1111111111111111111111111111111111111111111111111111111110011100
>>2
1111111111111111111111111111111111111111111111111111111111100111 ----->  -25
>>1
1111111111111111111111111111111111111111111111111111111111001110 ----->  -50
>>>1(>>>无符号即可忽略最高位,前面这串0写不写都是一样的,我写上是为了和-50对比)
0000000000000000000000000000000001111111111111111111111111001110 -----> 2147483598】

表示无符号右移,高位补0。先化成二进制-100就是11111111111111111111111110011100,右移一位就是1111111111111111111111111001110,化成10进制就是2147483598.至于>>>-1,用程序跑出来是1,具体不知道怎么解释。位运算右边可以为负的么?原谅我道行不够。。。

fascinatingGirl
FantasticGirlisMe 谢谢。你说的是对的O(∩_∩)O~
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐