如果我用Java打印出~100
,我得到-101
。我正在努力工作。手動計算〜100
NOT(~
)運算符反轉所有位。
100
in binary is 00000000000000000000000001100100
。
反相其位,得出:
11111111111111111111111110011011
現在怎麼辦?我如何獲得-101
?
如果我用Java打印出~100
,我得到-101
。我正在努力工作。手動計算〜100
NOT(~
)運算符反轉所有位。
100
in binary is 00000000000000000000000001100100
。
反相其位,得出:
11111111111111111111111110011011
現在怎麼辦?我如何獲得-101
?
Java使用二進制補碼(請參閱§4.2原語類型和值)要否定,請取補碼並添加一個補碼。
-x = ~x + 1
~x = -x - 1
~100 = -100 - 1
另一種方式來思考,應該注意:
11111111111111111111111111111111 = -1
然後做:用2的補體系統
11111111111111111111111111111111 (-1)
- 11111111111111111111111110011011 (~x)
= 1100100 (100)
-1 - ~x = 100
-1 - 100 = ~x
~x = -101
http://en.wikipedia.org/wiki/Two%27s_complement – 2010-10-20 07:46:26
大部分系統都工作。在此係統中,正數與舊的二進制系統相同,而負數不同(這有助於使用相同數量的位映射另一個負數)
如果您想在此係統中編號並將其轉換回到舊的方式二進制:
〜(NegNumber)+1
究竟是什麼,你上有符號數,期待一個二進制操作呢? – 2010-10-20 07:46:30
你明白爲什麼'〜0'是'-1'嗎? – Gabe 2010-10-20 07:47:09