2016-02-05 88 views
3

-2的一个补为100000 ...... 01为什么-2 >>> 1等于2147483647的Java

-2的补1000000 ... 10

-2 >>> 1 

根据>>>定义左侧偏移0

应该是类似于01000......1,为什么变成0111111..11

+0

'>>>'是无符号的右移运算符,并不像'>>'那样看符号位.. [相关问题](http://stackoverflow.com/questions/16763917/what-是目的的无符号右移 - 运算符在爪哇) – txtechhelp

回答

9

为了产生2补码表示(即-2的代表)开始使用的2表示,翻转其所有位,并添加1的结果:

00000000000000000000000000000010 -- This is 2 
11111111111111111111111111111101 -- This the inverse of 2 
11111111111111111111111111111110 -- This is the inverse of 2, plus 1 

-2的二进制表示是11111111111111111111111111111110demo)。

它转移到右侧由一个无符号扩展产生

01111111111111111111111111111111 

而这恰恰是你得到的结果。

+0

谢谢你,我完全错过-2的倒数。 – javarookie

相关问题