|
數(shù)在機(jī)器中的表示有以下幾種:原碼、反碼、補(bǔ)碼。 原碼、反碼、補(bǔ)碼的基本概念 字節(jié):8個(gè)位。 字長(zhǎng):若干個(gè)字節(jié)。到底是幾個(gè)字節(jié)?具體看是哪種CPU。比如2010普及組第11題就假設(shè)一個(gè)字長(zhǎng)只有一個(gè)字節(jié)8個(gè)位。 原碼、反碼、補(bǔ)碼都是建立在機(jī)器數(shù)在一個(gè)字長(zhǎng)上的表示。為了方便理解,我們假設(shè)字長(zhǎng)為一個(gè)字節(jié)。要注意事實(shí)上為32位CPU字長(zhǎng)為4個(gè)字節(jié),64位CPU字長(zhǎng)為8個(gè)字節(jié)。 原碼:首位為符號(hào)位,其余為真值。比如: 特點(diǎn):簡(jiǎn)單。 范圍:比如字長(zhǎng)為8位,則范圍為 11111111(-255)至 01111111(+255)。 缺點(diǎn):0有兩個(gè)表示,分別為正零(00000000)和負(fù)零(10000000),給計(jì)算機(jī)計(jì)算帶來(lái)不便。 反碼:首位為符號(hào)位,其它位分正數(shù)和負(fù)數(shù)兩種情況。 反碼正數(shù):所有位和原碼一樣; 反碼負(fù)數(shù):除了符號(hào)位和原碼一樣,其他位相反。 比如:77的反碼表示為01001101;-77的反碼表示為10110010。 補(bǔ)碼:分正數(shù)和負(fù)數(shù)兩種情況。 補(bǔ)碼正數(shù):所有位和反碼一樣,當(dāng)然也和原碼一樣。 補(bǔ)碼負(fù)數(shù):等于反碼加1。簡(jiǎn)單的一句話,其實(shí)很麻煩。 比如:77的補(bǔ)碼表示為01001101(和原碼、反碼一致);-77的補(bǔ)碼表示為10110011。 加1之后會(huì)有進(jìn)位,因?yàn)檠a(bǔ)碼沒(méi)有符號(hào)位,所以負(fù)零的補(bǔ)碼表示也是00000000。 特點(diǎn):表示比補(bǔ)碼更麻煩。但是解決了一個(gè)問(wèn)題:0只有一種表示。
補(bǔ)碼加法:在計(jì)算機(jī)中,凡是帶符號(hào)數(shù)一律用補(bǔ)碼表示,運(yùn)算結(jié)果自然也是補(bǔ)碼。其運(yùn)算特點(diǎn)是:符號(hào)位和數(shù)值位一起參加運(yùn)算,并且自動(dòng)獲得結(jié)果(包括符號(hào)位與數(shù)值位)。 補(bǔ)碼加法的運(yùn)算規(guī)則為:
即:兩數(shù)補(bǔ)碼的和等于兩數(shù)和的補(bǔ)碼。 【例】已知 [+51]補(bǔ)=0011 0011,[+66]補(bǔ)=0100 0010,[-51]補(bǔ)=1100 1101; 求:[+66]補(bǔ)+[+51]補(bǔ)=?,[+66]補(bǔ)+[-51]補(bǔ)=? 【解】: (1)由于 [+51]補(bǔ)=0011 0011,[+66]補(bǔ)=0100 0010, 故 [+66]補(bǔ)+[+51]補(bǔ)=[(+66)+(+55)]補(bǔ)=01110101 結(jié)果為正,因此 [(+66)+(+55)]原=[(+66)+(+55)]補(bǔ)=01110101 其真值為+117,計(jì)算結(jié)果正確。 (2)由于 [+66]補(bǔ)=0100 0010,[-51]補(bǔ)=1100 1101, 每日練習(xí) 1、無(wú)符號(hào)二進(jìn)制數(shù)11001000所表示的十進(jìn)制數(shù)為___________ 。 A .104 B. 148 C. 172 D . 200 2、有符號(hào)二進(jìn)制數(shù)11001000所表示的十進(jìn)制數(shù)為___________ 。 A . -200 B. -72 C. 72 D . 200 3、用16位和8位機(jī)器碼分別寫(xiě)出十進(jìn)制數(shù)+58和—58的原碼、反碼和補(bǔ)碼。 4、若用8位機(jī)器碼表示十進(jìn)制數(shù)—101,則原碼表示的形式為 (1) ; 補(bǔ)碼表示的形式為(2) 。 (1)A.11100101 B.10011011 C.11010101 D.11100111 (2)A.11100101 B.10011011 C.11010101 D.11100111 5、已知一個(gè)字長(zhǎng)為8的整數(shù)的原碼是10011010,求它的補(bǔ)碼。 6、已知一個(gè)字長(zhǎng)為8的整數(shù)的補(bǔ)碼是10011000,求它的原碼。 歷年真題 1、在字長(zhǎng)為16位的系統(tǒng)環(huán)境下,一個(gè)16位帶符號(hào)整數(shù)的二進(jìn)制補(bǔ)碼為1111111111101101。其對(duì)應(yīng)的十進(jìn)制整數(shù)應(yīng)該是( )。 A.19 B.-19 C.18 D.-18 2、一個(gè)字長(zhǎng)為8位的整數(shù)的補(bǔ)碼是11111001,則它的原碼是( )。 A.00000111 B.01111001 C.11111001 D.10000111 3、在整數(shù)的補(bǔ)碼表示法中,以下說(shuō)法正確的是( )。 A.只有負(fù)整數(shù)的編碼最高位為1 B.在編碼的位數(shù)確定后,所能表示的最小整數(shù)和最大整數(shù)的絕對(duì)值相同 C.整數(shù)0只有一個(gè)唯一的編碼 D.兩個(gè)用補(bǔ)碼表示的數(shù)相加時(shí),如果在最高位產(chǎn)生進(jìn)位,則表示運(yùn)算溢出 原碼反碼補(bǔ)碼每日練習(xí)參考答案: 1、D 2、B 3、+58,16位原碼:0000 0000 0011 1010 反碼:0000 0000 0011 1010 補(bǔ)碼:0000 0000 0011 1010 +58,8位原碼:0011 1010 反碼:0011 1010 補(bǔ)碼:0011 1010 -58,16位原碼:1000 0000 0011 1010 反碼:1111 1111 1100 0101 補(bǔ)碼:1111 1111 1100 0110 -58,8位原碼:1011 1010 反碼:1100 0101 補(bǔ)碼:1100 0110 4、(1) A (2) B 5、1110 0110 6、1110 1000 原碼反碼補(bǔ)碼歷年真題參考答案:1B 2A 3AC 另:為感謝各位家長(zhǎng)一直以來(lái)對(duì)融科信息學(xué)的信任與支持,在雙十二來(lái)臨之際,特推出雙十二底價(jià)團(tuán)購(gòu)信息學(xué)課程,詳情點(diǎn)擊鏈接→融科教育雙十二同學(xué)“惠”,信息學(xué)課程底價(jià)瘋狂搶!(←點(diǎn)擊鏈接,了解活動(dòng)詳情吧) 長(zhǎng)沙信息學(xué)競(jìng)賽 |
|
|
來(lái)自: 長(zhǎng)沙7喜 > 《信息課》