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