step1:4的補碼(正數的原碼、補碼、反碼都相同https://baike.baidu.com/item/%E5%8F%8D%E7%A0%81/769985?fr=aladdin)爲0100,第一位爲符號位,0爲正,1爲負。
step2 :~爲按位取反,包含第一位的符號碼,此時補碼變爲1011,要求該補碼對應的十進制數值
step3 :補碼=反碼+1,反碼爲1010
原碼=反碼按位取反(不包含第一位的符號碼),原碼爲1101
step4:1101(二進制)=-5(十進制),第一位爲符號位1代表負數
數據在內存中是以補碼的形式來存儲的。
舉一個負數的例子
~-10:
-10的原碼爲11010,反碼爲10101,補碼爲10110,內存中-10爲10110(二進制)
~按位取反,得01001,第一位0爲正,該補碼也就是原碼,爲9。