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