原碼:計算機中一種對數字的二進制定點表示方法。原碼表示法在數值前面前面有一位符號位(即最高位為符號位),正數該位為0,負數該位為1(0有兩種表示:+0和-0),其余位表示數值的大小。
反碼:正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。
補碼:正數和+0的補碼是其原碼;負數則先計算其反碼,然后反碼加上1
int類型在內存中以補碼的形式存儲
EG:
一個C語言程序在一台32位機器上運行。程序中定義了三個變量,其中x和z是int型,y是short型。當x=127,y=-9時,執行賦值語句z=x+y后,xyz的值分別是?
在32位機器上int占4字節,故
x的原碼是00000000 00000000 00000000 01111111
y的原碼是10000000 00000000 00000000 00001001
x的反碼是00000000 00000000 00000000 01111111
y的反碼是11111111 11111111 11111111 11110110
x的補碼是00000000 00000000 00000000 01111111
y的補碼是11111111 11111111 11111111 11110111
(計算機中存的x y都是補碼)
所以z=x+y=00000000 00000000 00000000 01110110(即z的補碼是這串數,計算機中存的也是這串數)
因為正數的原碼反碼補碼相同,所以上串數也是z的原碼
