3
-2
的一个补为100000 ...... 01为什么-2 >>> 1等于2147483647的Java
-2
的补1000000 ... 10
-2 >>> 1
根据>>>
定义左侧偏移0
应该是类似于01000......1
,为什么变成0111111..11
?
-2
的一个补为100000 ...... 01为什么-2 >>> 1等于2147483647的Java
-2
的补1000000 ... 10
-2 >>> 1
根据>>>
定义左侧偏移0
应该是类似于01000......1
,为什么变成0111111..11
?
为了产生2
补码表示(即-2
的代表)开始使用的2
表示,翻转其所有位,并添加1
的结果:
00000000000000000000000000000010 -- This is 2
11111111111111111111111111111101 -- This the inverse of 2
11111111111111111111111111111110 -- This is the inverse of 2, plus 1
-2
的二进制表示是11111111111111111111111111111110
(demo)。
它转移到右侧由一个无符号扩展产生
01111111111111111111111111111111
而这恰恰是你得到的结果。
谢谢你,我完全错过-2的倒数。 – javarookie
'>>>'是无符号的右移运算符,并不像'>>'那样看符号位.. [相关问题](http://stackoverflow.com/questions/16763917/what-是目的的无符号右移 - 运算符在爪哇) – txtechhelp