我使用~
操作進行位操作,我只是想知道Java如何計算負數?Java如何計算負數?
我檢查了Java文檔:
「的一元按位求補運算符‘〜’反轉的位模式;它可以被應用到任何的整數類型的,使每一個‘0’的‘1’的並且每個「1」爲「0」,例如,一個字節包含8位;將該操作符應用於位模式爲「00000000」的值將其模式改變爲「11111111」。
所以如果int a = 60 (0011 1100)
,那麼int c = ~a (1100 0011)
。
問題是,Java如何計算負數以便1100 0011 = -61
?計算1100 0011
的唯一方法是-61
是
- 最高位是符號位。
-2^6 + 2^1 + 2^0 = -61
。
但是這對我沒有意義。
你'在正確的軌道上,最高位是符號位。請參閱[二補](http://en.wikipedia.org/wiki/Two's_complement)。 – rgettman
有符號位用於double和float,這意味着你有0.0和-0.0,整數不是這樣完成的,'char'是無符號的。 –