原碼
數值 X 的原碼記為 [X]原,如果機器字長為 n (即采用 n 個二進制位表示數據),則最高位是符號位,0 表示正號,1 表示負號,基余的 n~1 位表示數值的絕對值。數值零的原碼表示有兩種形式:[+0]原=00000000,[-0]原=10000000。
例:
[+4]原 = 00000100
[-4]原 = 10000100
[+127]原 = 01111111
[-127]原 = 11111111
反碼
數值 X 的反碼記作 [X]反,如果機器字長為 n,則最高位是符號位,0 表示正號,1 表示負號,正數的反碼與原碼相同,負數的反碼則是其絕對值按位求反。數值0的反碼表示有兩種形式:[+0]反=00000000,[-0]反=11111111。
例:
[+4]反 = 00000100
[-4]反 = 11111011
[+127]反 = 01111111
[-127]反 = 10000000
補碼
數值 X 的補碼記作 [X]補,如果機器字長為 n,則最高為符號位,0 表示正號,1 表示負號,正數的補碼與其原碼和反碼相同,負數的補碼則等于其反碼的末尾加 1。在補碼表示中,0 有唯一的編碼:[+0]補=00000000, [-0]補=00000000。
例:
[+4]補 = 00000100
[-4]補 = 11111100
[+127]補 = 01111111
[-127]補 = 10000001
移碼
在數 X 上增加一個偏移量來定義的,常用于表示浮點數中的階碼。如果機器字長為 n,在偏移2^(n-1)的情況下,只要將補碼的符號位取反便可獲相應的移碼。
例:
[+0]移 = 10000000
[-0]移 = 10000000
[+4]移 = 10000100
[-4]移 = 01111100
[+127]移 = 11111111
[-127]移 = 00000001
總結:原碼、反碼、補碼中最高位 0 表示正數,1 表示負數。負數的反碼規則是符號位不變,絕對值位按位取反。負數的補碼規則是符號位不變,絕對值位按位取反然后再加1。