2 回答

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個(gè)贊
你的誤解是由于缺乏關(guān)于負(fù)整數(shù)在 Java 中如何用二進(jìn)制表示的知識(shí)造成的。您應(yīng)該閱讀 2 的補(bǔ)碼。
10000000000000001100100000100000不是的二進(jìn)制表示-51232。
11111111111111110011011111100000是。
當(dāng)你按位運(yùn)行 AND 時(shí),你會(huì)得到:
11111111111111110011011111100000 (-51232)
01111111111111111111111111111111 (Integer.MAX_VALUE)
--------------------------------
01111111111111110011011111100000 (2147432416)
下面是 -51232 的二進(jìn)制表示,旁邊是 51232 的二進(jìn)制表示。您可以看到它們的和是 2 32。int對(duì)于任何一對(duì)sx和,2 的補(bǔ)碼總是這種情況-x。
00000000000000001100100000100000 (-51232)
11111111111111110011011111100000 (51232)
添加回答
舉報(bào)