在說這個問題之前,我們需要知道這幾個概念:原碼、反碼、補碼
- 在計算機運算的時候,都是以補碼的形式運算的
- 正數的原碼、反碼、補碼都一樣
- 負數的反碼=它的原碼符號位不變,其余位取反
- 負數的補碼=負數的反碼+1
- 0的反碼、補碼都是0
- 二進制的最高位為符號位,0表示正數,1表示負數
在計算機中,2的二進制為00000010,它的反碼、補碼都是00000010,如果要對2按位取反,就要對它的補碼按位取反。
00000010按位取反結果為11111101
對補碼取反的結果仍是補碼,只不過它會變成另外一個數的補碼,這個數(用a表示)就是我們的計算結果,11111101的最高位是1,說明它是某一個負數的補碼,由于負數的補碼等于它的反碼+1,所以a的反碼為11111100,a的原碼為10000011,即為-3
~2
-3
我們再舉個例子
~-8
7
-8的原碼為10001000
-8的反碼為11110111
-8的補碼為11111000
對11111000取反,結果為00000111,最高位是0,說面它是某個正數(b)的補碼,由于正數的原碼、反碼、補碼一樣,所以b=00000111,即為7