2016-02-05 78 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