版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第2章 計(jì)算機(jī)中的數(shù)制和編碼 第2章 計(jì)算機(jī)中的數(shù)制和編碼 2.1 無(wú)符號(hào)數(shù)的表示及運(yùn)算無(wú)符號(hào)數(shù)的表示及運(yùn)算 2.2 帶符號(hào)數(shù)的表示及運(yùn)算帶符號(hào)數(shù)的表示及運(yùn)算 2.3 信息的編碼信息的編碼 2.4 數(shù)的定點(diǎn)與浮點(diǎn)表示法數(shù)的定點(diǎn)與浮點(diǎn)表示法 第2章 計(jì)算機(jī)中的數(shù)制和編碼 2.1 無(wú)符號(hào)數(shù)的表示及運(yùn)算 2.1.1 無(wú)符號(hào)數(shù)的表示方法無(wú)符號(hào)數(shù)的表示方法 1. 十進(jìn)制數(shù)的表示方法 十進(jìn)制計(jì)數(shù)法的特點(diǎn)是: 逢十進(jìn)一; 使用10個(gè)數(shù)字符號(hào)(0,1,2,9)的不同組合來(lái)表示一個(gè)十進(jìn)制數(shù); 以后綴D或d表示十進(jìn)制數(shù)(Decimal),但該后綴可以省略。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 任何一個(gè)十進(jìn)制數(shù)可表示為:
2、 110nmiiiDDN式中:m表示小數(shù)位的位數(shù),n表示整數(shù)位的位數(shù),Di為第i位上的數(shù)符(可以是09十個(gè)數(shù)字符號(hào)中的任一個(gè))。 例例2.1 138.5(D)= 1012105108103101(2.1.1)第2章 計(jì)算機(jī)中的數(shù)制和編碼 2. 二進(jìn)制數(shù)的表示方法二進(jìn)制數(shù)的表示方法 二進(jìn)制計(jì)數(shù)法的特點(diǎn)是: 逢二進(jìn)一; 使用2個(gè)數(shù)字符號(hào)(0,1)的不同組合來(lái)表示一個(gè)二進(jìn)制數(shù); 以后綴B或b表示二進(jìn)制數(shù)(Binary)。 任何一個(gè)二進(jìn)制數(shù)可表示為: 12nmiiiBBN式中:m為小數(shù)位的位數(shù),n為整數(shù)位的位數(shù),Bi為第i位上的數(shù)符(0或1)。 例例2.2 1101.11B= )(75.1321212
3、1202121210123D(2.1.2)第2章 計(jì)算機(jī)中的數(shù)制和編碼 3. 十六進(jìn)制數(shù)的表示法十六進(jìn)制數(shù)的表示法 十六進(jìn)制計(jì)數(shù)法的特點(diǎn)是: 逢十六進(jìn)一; 使用16個(gè)數(shù)字符號(hào)(0,1,2,3,9,A,B,C,D,E,F)的不同組合來(lái)表示一個(gè)十六進(jìn)制數(shù),其中AF 依次表示1015; 以后綴H或h表示十六進(jìn)制數(shù)(Hexadecimal)。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 任何一個(gè)十六進(jìn)制數(shù)可表示為: 116nmiiiHHN式中:m為小數(shù)位的位數(shù),n為整數(shù)位的位數(shù),Hi為第i位上的數(shù)符(可以是0,1,,9,A,B,C,D,E,F十六個(gè)數(shù)字符號(hào)中的任一個(gè))。 例例2.3 0E5AD.BFH =21012
4、316151611161316101651614(2.1.3)第2章 計(jì)算機(jī)中的數(shù)制和編碼 一般來(lái)說(shuō),對(duì)于基數(shù)為的任一數(shù)可用多項(xiàng)式表示為: 1nmiiiXXkN(2.1.4) 式中:X為基數(shù),表示X進(jìn)制;i為位序號(hào);m為小數(shù)部分位數(shù);n為整數(shù)部分的位數(shù);ki為第i位上的數(shù)值,可以為0,1,2,X-1共X個(gè)數(shù)字符號(hào)中任一個(gè);Xi為第i位的權(quán)。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 2.1.2 各種數(shù)制的相互轉(zhuǎn)換各種數(shù)制的相互轉(zhuǎn)換 1任意進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)任意進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù) 二進(jìn)制、十六進(jìn)制以至任意進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的方法很簡(jiǎn)單,只要按式2.1.2,2.1.3和2.1.4各位按權(quán)展開(kāi)(即該位的數(shù)
5、值乘于該位的權(quán))求和即可。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 2. 十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)1 1)整數(shù)部分的轉(zhuǎn)換整數(shù)部分的轉(zhuǎn)換下面通過(guò)一個(gè)簡(jiǎn)單的例子對(duì)轉(zhuǎn)換方法進(jìn)行分析。例如, B2B3B0B2B1B0B3B1012321202121101113BD 可見(jiàn),要確定13D對(duì)應(yīng)的二進(jìn)制數(shù),只需從右到左分別確定 B0,B1,B2,B3即可。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 式(2.1.5)右側(cè)除以2: 商為 ,余數(shù)為1,此余數(shù)即為B0; 商再除以2: 商為 ,余數(shù)為0,此余數(shù)即為B1; 商再除以2: 商為 ,余數(shù)為1,次余數(shù)即為B2; 商再除以2: 商為(商為0時(shí)停止) ,余數(shù)為1,此
6、余數(shù)即為 B3。 012202121012121021第2章 計(jì)算機(jī)中的數(shù)制和編碼 由以上過(guò)程可以得出十進(jìn)制整數(shù)部分轉(zhuǎn)換為二進(jìn)制數(shù)的方法:除以基數(shù)(2)取余數(shù),先為低位(B0)后為高位。 顯然,該方法也適用于將十進(jìn)制整數(shù)轉(zhuǎn)換為八進(jìn)制整數(shù)(基數(shù)為8)、十六進(jìn)制整數(shù)(基數(shù)為16)以至其它任何進(jìn)制整數(shù)。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 2) 小數(shù)部分的轉(zhuǎn)換同樣用一個(gè)簡(jiǎn)單例子說(shuō)明十進(jìn)制小數(shù)部分的轉(zhuǎn)換方法。例如, B-1B-2B-1B-221212111 .075.0BD要將一個(gè)十進(jìn)制小數(shù)轉(zhuǎn)換為二進(jìn)制小數(shù),實(shí)際上就是求B-1,B-2,給式(2.1.6)右側(cè)乘以基數(shù)2得: (2.1.6)1211整數(shù)部分為B
7、-1小數(shù)部分第2章 計(jì)算機(jī)中的數(shù)制和編碼 整數(shù)部分為1,此即為B-1。小數(shù)部分為12-1。 小數(shù)部分再乘以基數(shù)2得:整數(shù)部分為1,此即為B-2。 此時(shí)小數(shù)部分已為0,停止往下計(jì)算(若不為0,繼續(xù)求B-3,B-4,直到小數(shù)部分為0或小數(shù)部分的位數(shù)滿足一定精度時(shí)為止) 第2章 計(jì)算機(jī)中的數(shù)制和編碼 由以上分析可得到十進(jìn)制小數(shù)部分轉(zhuǎn)換為二進(jìn)制小數(shù)的方法: 小數(shù)部分乘以基數(shù)(2)取整數(shù)(0或1),先為高位(B-1)后為低位。 顯然,該方法也適用于將十進(jìn)制小數(shù)轉(zhuǎn)換為八進(jìn)制小數(shù)(基數(shù)為8)、十六進(jìn)制小數(shù)(基數(shù)為16)以至其它任何進(jìn)制小數(shù)。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 例例2.4 將13.75轉(zhuǎn)換為二進(jìn)制
8、數(shù)。 分別將整數(shù)和小數(shù)部分進(jìn)行轉(zhuǎn)換: 整數(shù)部分:13=1101B 小數(shù)部分:0.75=0.11B 因此,13.75=1101.11B 第2章 計(jì)算機(jī)中的數(shù)制和編碼 例例2.5 將28.75轉(zhuǎn)換為十六進(jìn)制數(shù) 整數(shù)部分:28=1CH 小數(shù)部分:0.7516=12.0, B-1=CH,小數(shù)部分已為0,停止計(jì)算。因此,28.75=1C.CH 第2章 計(jì)算機(jī)中的數(shù)制和編碼 3二進(jìn)制數(shù)與十六進(jìn)制數(shù)之間的轉(zhuǎn)換二進(jìn)制數(shù)與十六進(jìn)制數(shù)之間的轉(zhuǎn)換 因?yàn)?4=16,即可用四位二進(jìn)制數(shù)表示一位十六進(jìn)制數(shù),所以可得到如下所述的二進(jìn)制數(shù)與十六進(jìn)制數(shù)之間的轉(zhuǎn)換方法。 將二進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù)的方法將二進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù)
9、的方法:以小數(shù)點(diǎn)為界,向左(整數(shù)部分)每四位為一組,高位不足4位時(shí)補(bǔ)0;向右(小數(shù)部分)每四位為一組,低位不足4位時(shí)補(bǔ)0。然后分別用一個(gè)16進(jìn)制數(shù)表示每一組中的4位二進(jìn)制數(shù)。 將十六進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)的方法:將十六進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)的方法:直接將每一位十六進(jìn)制數(shù)寫成其對(duì)應(yīng)的四位二進(jìn)制數(shù)。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 例例2.6 1101110.01011B=0110,1110.0101,1000B=6E.58H 2F.1BH=10 1111.0001 1011B 第2章 計(jì)算機(jī)中的數(shù)制和編碼 2.1.3 二進(jìn)制數(shù)的運(yùn)算 1. 二進(jìn)制數(shù)的算術(shù)運(yùn)算 (1) 加: 0+0=0 0+1=1 1+
10、0=1 1+1=0(進(jìn)1) (2) 減: 0-0=0 1-1=0 1-0=1 0-1=1(借位) (3) 乘: 00=0 01=0 10=0 11=1 (4) 除: 二進(jìn)制除法是乘法的逆運(yùn)算。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 2. 二進(jìn)制數(shù)的邏輯運(yùn)算二進(jìn)制數(shù)的邏輯運(yùn)算 (1) “與“運(yùn)算(AND). “與”運(yùn)算又稱邏輯乘,可用符號(hào)“”或“”表示。運(yùn)算規(guī)則如下:00=0 01=0 10=0 11=1 可以看出,只有當(dāng)兩個(gè)變量均為“1”時(shí),“與”的結(jié)果才為“1”。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 (2) “或”運(yùn)算(OR) “或”運(yùn)算又稱邏輯加,可用符號(hào)“”或“+”表示。運(yùn)算規(guī)則如下:00=0 01=
11、1 10=1 11=1 可以看出,兩個(gè)變量只要有一個(gè)為“1”,“或”的結(jié)果就為“1”。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 (3) “非”運(yùn)算(NOT) 變量的“非”運(yùn)算結(jié)果用表示。邏輯“非”運(yùn)算規(guī)則如下: (4) “異或”運(yùn)算(XOR) “異或”運(yùn)算可用符號(hào)“”表示。運(yùn)算規(guī)則如下: 可以看出,兩變量只要不同,“異或”運(yùn)算的結(jié)果就為“1”。 10 01 011101110000第2章 計(jì)算機(jī)中的數(shù)制和編碼 (4) “異或”運(yùn)算(XOR) “異或”運(yùn)算可用符號(hào)“”表示。運(yùn)算規(guī)則如下: 可以看出,兩變量只要不同,“異或”運(yùn)算的結(jié)果就為“1”。 011101110000第2章 計(jì)算機(jī)中的數(shù)制和編碼 例例
12、2.7 A=11110101B, B=00110000B,求 ?BABABABABBA00110000BBA11110101BBA11000101BA00001010BB11001111解解第2章 計(jì)算機(jī)中的數(shù)制和編碼 2.2 帶符號(hào)數(shù)的表示及運(yùn)算帶符號(hào)數(shù)的表示及運(yùn)算 2.2.1 機(jī)器數(shù)與真值 日常生活中遇到的數(shù),除了上述無(wú)符號(hào)數(shù)外,還有帶符號(hào)數(shù)。對(duì)于帶符號(hào)的二進(jìn)制數(shù),其正負(fù)符號(hào)如何表示呢?在計(jì)算機(jī)中,為了區(qū)別正數(shù)和負(fù)數(shù),通常用二進(jìn)制數(shù)的最高位表示數(shù)的符號(hào)。對(duì)于一個(gè)字節(jié)型二進(jìn)制數(shù)來(lái)說(shuō),D7位為符號(hào)位,D6D0位為數(shù)值位。在符號(hào)位中,規(guī)定用“0”表示正,“1”表示負(fù),而數(shù)值位表示該數(shù)的數(shù)值大小。
13、 把一個(gè)數(shù)及其符號(hào)位在機(jī)器中的一組二進(jìn)制數(shù)表示形式,稱為“機(jī)器數(shù)”。機(jī)器數(shù)所表示的值稱為該機(jī)器數(shù)的“真值”。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 2.2.2 機(jī)器數(shù)的表示方法 1. 原碼設(shè)數(shù)x的原碼記作x原,如機(jī)器字長(zhǎng)為n,則原碼定義如下: 0) 12(|2120111xxxxxnnn原 在原碼表示法中,最高位為符號(hào)位(正數(shù)為0,負(fù)數(shù)為1),其余數(shù)字位表示數(shù)的絕對(duì)值。 (2.2.1)第2章 計(jì)算機(jī)中的數(shù)制和編碼 例如,當(dāng)機(jī)器字長(zhǎng)n=8時(shí), +0原=00000000B -0原=27+0(按定義計(jì)算,下同)=10000000B +8原=00001000B-8原=27+8=10001000B +127原=
14、01111111B-127原=27+127=11111111B 當(dāng)機(jī)器字長(zhǎng)n=16時(shí), +0原=0000000000000000B-0原=215+0=1000000000000000B +8原=0000000000001000B-8原=215+8=1000000000001000B +32767原=0111111111111111B-32767原=215+32767=1111111111111111B 第2章 計(jì)算機(jī)中的數(shù)制和編碼 可以看出,原碼表示數(shù)的范圍是。8位二進(jìn)制原碼表示數(shù)的范圍為-127+127,16位二進(jìn)制原碼表示數(shù)的范圍為-32767+32767;“0”的原碼有兩種表示法:000
15、00000表示+0,10000000表示-0。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 原碼表示法簡(jiǎn)單直觀,且與真值的轉(zhuǎn)換很方便,但不便于在計(jì)算機(jī)中進(jìn)行加減運(yùn)算。如進(jìn)行兩數(shù)相加,必須先判斷兩個(gè)數(shù)的符號(hào)是否相同。如果相同,則進(jìn)行加法運(yùn)算,否則進(jìn)行減法運(yùn)算。如進(jìn)行兩數(shù)相減,必須比較兩數(shù)的絕對(duì)值大小,再由大數(shù)減小數(shù),結(jié)果的符號(hào)要和絕對(duì)值大的數(shù)的符號(hào)一致。按上述運(yùn)算方法設(shè)計(jì)的算術(shù)運(yùn)算電路很復(fù)雜。因此,計(jì)算機(jī)中通常使用補(bǔ)碼進(jìn)行加減運(yùn)算,這樣就引入了反碼表示法和補(bǔ)碼表示法。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 2. 反碼設(shè)數(shù)x的反碼記作x反,如機(jī)器字長(zhǎng)為n,則反碼定義如下: 0) 12(|) 12(12011xxxxxn
16、nn反 正數(shù)的反碼與其原碼相同。例如,當(dāng)機(jī)器字長(zhǎng)n=8時(shí): +0反=+0原=00000000B +127反=+127原=01111111B當(dāng)機(jī)器字長(zhǎng)n=16時(shí): +8反=+8原=0000000000001000B +127反=+127原=0000000001111111B (2.2.2)第2章 計(jì)算機(jī)中的數(shù)制和編碼 負(fù)數(shù)的反碼是在原碼基礎(chǔ)上,符號(hào)位不變(仍為1),數(shù)值位按位取反。例如,當(dāng)機(jī)器字長(zhǎng)n=8時(shí): -0反=(28-1)-0=11111111B -127反=(28-1)-127=10000000B 反碼表示數(shù)的范圍是。8位二進(jìn)制反碼表示數(shù)的范圍為-127+127,16位二進(jìn)制反碼表示數(shù)的
17、范圍為-32767+32767;“0”的反碼有兩種表示法:00000000表示+0,11111111表示-0。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 3. 補(bǔ)碼設(shè)數(shù)x的補(bǔ)碼記作x補(bǔ),如機(jī)器字長(zhǎng)為n,則補(bǔ)碼定義如下: 02|212011xxxxxnnn補(bǔ)正數(shù)的補(bǔ)碼與其原碼、反碼相同。例如,當(dāng)機(jī)器字長(zhǎng)n=8時(shí):+8補(bǔ)=+8反=+8原=00001000B+127補(bǔ)=+127反=+127原=01111111B當(dāng)機(jī)器字長(zhǎng)n=16時(shí):+8補(bǔ)=+8反=+8原=0000000000001000B+127補(bǔ)=+127反=+127原=0000000001111111B (2.2.3)第2章 計(jì)算機(jī)中的數(shù)制和編碼 負(fù)數(shù)的補(bǔ)
18、碼是在原碼基礎(chǔ)上,符號(hào)位不變(仍為1),數(shù)值位按位取反,末位加1;或在反碼基礎(chǔ)上末位加1。例如,當(dāng)機(jī)器字長(zhǎng)n=8時(shí):-8原=10001000B-127原=11111111B-8反=11110111B-127反=10000000B-8補(bǔ)=28-8=11111000B-127補(bǔ)=28-127=10000001B可以看出,補(bǔ)碼表示數(shù)的范圍是。8位二進(jìn)制補(bǔ)碼表示數(shù)的范圍為-128+127,16位二進(jìn)制反碼表示數(shù)的范圍為-32768+32767。8位二進(jìn)制數(shù)的原碼、反碼和補(bǔ)碼如表2.1所示。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 表表2.1 8位二進(jìn)制數(shù)的原碼、反碼和補(bǔ)碼表位二進(jìn)制數(shù)的原碼、反碼和補(bǔ)碼表 帶 符
19、 號(hào) 數(shù) 二進(jìn)制數(shù) 無(wú)符號(hào)十進(jìn)制數(shù) 原碼 反碼 補(bǔ)碼 0000 0000 0000 0001 0000 0010 0111 1110 0111 1111 1000 0000 1000 0001 1111 1101 1111 1110 1111 1111 0 1 2 126 127 128 129 253 254 255 +0 +1 +2 +126 +127 -0 -1 -125 -126 -127 +0 +1 +2 +126 +127 -127 -126 -2 -1 -0 +0 +1 +2 +126 +127 -128 -127 -3 -2 -1 第2章 計(jì)算機(jī)中的數(shù)制和編碼 2.2.3 真值
20、與機(jī)器數(shù)之間的轉(zhuǎn)換真值與機(jī)器數(shù)之間的轉(zhuǎn)換 1原碼轉(zhuǎn)換為真值原碼轉(zhuǎn)換為真值 根據(jù)原碼定義,將原碼數(shù)值位各位按權(quán)展開(kāi)求和,由符號(hào)位決定數(shù)的正負(fù)即可由原碼求出真值。 例例2.8 已知x原=00011111B,y原=10011101B,求x和y x=+(026+025+124+123+122+121+120)=31 y=-(026+025+124+123+122+021+120)=-29 第2章 計(jì)算機(jī)中的數(shù)制和編碼 2. 反碼轉(zhuǎn)換為真值 要求反碼的真值,只要先求出反碼對(duì)應(yīng)的原碼,再按上述原碼轉(zhuǎn)換為真值的方法即可求出其真值。 正數(shù)的原碼是反碼本身。 負(fù)數(shù)的原碼可在反碼基礎(chǔ)上,符號(hào)位仍為1不變,數(shù)值位按
21、位取反。 例例2.9 已知x反=00001111B,y反=11100101B,求x和y解解 x原= x反=00001111B, x=+(026+025+024+123+122+121+120)=15 y原=10011010B, y=-(026+025+124+123+022+121+020)= -26 第2章 計(jì)算機(jī)中的數(shù)制和編碼 3. 補(bǔ)碼轉(zhuǎn)換為真值同理,要求補(bǔ)碼的真值,也要先求出補(bǔ)碼對(duì)應(yīng)的原碼。正數(shù)的原碼與補(bǔ)碼相同。負(fù)數(shù)的原碼可在補(bǔ)碼基礎(chǔ)上再次求補(bǔ),即:補(bǔ)補(bǔ)原xx(2.2.4)第2章 計(jì)算機(jī)中的數(shù)制和編碼 例例2.10 已知x補(bǔ)=00001111B,y補(bǔ)=11100101B,求x和y解解
22、x原= x補(bǔ)=00001111B, x=+(026+025+024+123+122+121+120)=15 y原=y補(bǔ)補(bǔ)=10011011B, y=-(026+025+124+123+022+121+120)= -27 第2章 計(jì)算機(jī)中的數(shù)制和編碼 2.2.4 補(bǔ)碼的加減運(yùn)算補(bǔ)碼的加減運(yùn)算 1. 補(bǔ)碼加法補(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ǔ)碼。 補(bǔ)補(bǔ)補(bǔ)yxyx(2.2.5) 第2章 計(jì)算機(jī)中的數(shù)制和編碼 例例2.11 已知
23、+51補(bǔ)=0011 0011B,+66補(bǔ)=0100 0010B, -51補(bǔ)=1100 1101B, -66補(bǔ)=1011 1110B 求求 +66補(bǔ)+51補(bǔ)=?+66補(bǔ)+-51補(bǔ)=?-66補(bǔ)+-51補(bǔ)=? 解解 二進(jìn)制(補(bǔ)碼)加法 十進(jìn)制加法0100 0010 + 66補(bǔ) + 66+)0011 0011 + 51補(bǔ) +) + 510111 0101 +117補(bǔ) +117 第2章 計(jì)算機(jī)中的數(shù)制和編碼 由于+66補(bǔ)+51補(bǔ)=(+66)+(+55)補(bǔ)=01110101B結(jié)果為正,因此(+66)+(+55)原=(+66)+(+55)補(bǔ)=01110101B其真值為+117,計(jì)算結(jié)果正確。 二進(jìn)制(補(bǔ)碼)
24、加法 十進(jìn)制加法 0100 0010 + 66補(bǔ) +66+) 1100 1101 51補(bǔ) +) 51 0000 1111 +15補(bǔ) +151自動(dòng)丟失第2章 計(jì)算機(jī)中的數(shù)制和編碼 由于+66補(bǔ)+51補(bǔ)=(+66)+(55)補(bǔ)=0000111B結(jié)果為正,因此(+66)+(55)原=(+66)+(55)補(bǔ)=00001111其真值為+15,計(jì)算結(jié)果正確。 二進(jìn)制(補(bǔ)碼)加法 十進(jìn)制加法 1011 1110 - 66補(bǔ) -66+) 1100 1101 51補(bǔ) +) 51 1000 1011 -117補(bǔ) -1171自動(dòng)丟失第2章 計(jì)算機(jī)中的數(shù)制和編碼 由于66補(bǔ)+51補(bǔ)=10001011B=(66)+(5
25、5)補(bǔ) 結(jié)果為負(fù),因此 (66)+(55)原=(66)+(55)補(bǔ)補(bǔ)=11110101B其真值為117,計(jì)算結(jié)果正確。 可以看出,不論被加數(shù)、加數(shù)是正數(shù)還是負(fù)數(shù),只要直接用它們的補(bǔ)碼直接相加,當(dāng)結(jié)果不超出補(bǔ)碼所表示的范圍時(shí),計(jì)算結(jié)果便是正確的補(bǔ)碼形式。但當(dāng)計(jì)算結(jié)果超出補(bǔ)碼表示范圍時(shí),結(jié)果就不正確了,這種情況稱為溢出。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 2. 補(bǔ)碼減法補(bǔ)碼減法補(bǔ)碼減法的運(yùn)算規(guī)則為: 補(bǔ)補(bǔ)補(bǔ)補(bǔ)補(bǔ)yxyxyx(2.2.6) 第2章 計(jì)算機(jī)中的數(shù)制和編碼 例例2.12 已知+51補(bǔ)=0011 0011B,+66補(bǔ)=0100 0010B51補(bǔ)=1100 1101B,66補(bǔ)=1011 1110
26、B求 +66補(bǔ)+51補(bǔ)=?66補(bǔ) 51補(bǔ)=? 解 +66補(bǔ) +51補(bǔ)=+66補(bǔ)+51補(bǔ) 66補(bǔ) 51補(bǔ)=66補(bǔ)+51補(bǔ) 第2章 計(jì)算機(jī)中的數(shù)制和編碼 二進(jìn)制(補(bǔ)碼)加法 十進(jìn)制加法 0100 0010 + 66補(bǔ) +66+) 1100 1101 51補(bǔ) -) +51 0000 1111 +15補(bǔ) +151自動(dòng)丟失 二進(jìn)制(補(bǔ)碼)加法 十進(jìn)制加法 1011 1110 - 66補(bǔ) -66+) 0011 0011 +51補(bǔ) -) -51 1111 0001 -15補(bǔ) -15第2章 計(jì)算機(jī)中的數(shù)制和編碼 可以看出,無(wú)論被減數(shù)、減數(shù)是正數(shù)還是負(fù)數(shù),上述補(bǔ)碼減法的規(guī)則都是正確的。同樣,由最高位向更高位的進(jìn)
27、位會(huì)自動(dòng)丟失而不影響運(yùn)算結(jié)果的正確性。 計(jì)算機(jī)中帶符號(hào)數(shù)用補(bǔ)碼表示時(shí)有如下優(yōu)點(diǎn): 可以將減法運(yùn)算變?yōu)榧臃ㄟ\(yùn)算,因此可使用同一個(gè)運(yùn)算器實(shí)現(xiàn)加法和減法運(yùn)算,簡(jiǎn)化了電路。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 無(wú)符號(hào)數(shù)和帶符號(hào)數(shù)的加法運(yùn)算可以用同一個(gè)加法器實(shí)現(xiàn),結(jié)果都是正確的。例如: 無(wú)符號(hào)數(shù) 帶符號(hào)數(shù) 11100001 225 31補(bǔ)+) 00001101 +) 13 +) +13補(bǔ) 11101110 238 18補(bǔ) 若兩操作數(shù)為無(wú)符號(hào)數(shù)時(shí),計(jì)算結(jié)果為無(wú)符號(hào)數(shù)11101110B,其真值為238,結(jié)果正確;若兩操作數(shù)為補(bǔ)碼形式,計(jì)算結(jié)果也為補(bǔ)碼形式,11101110B為18的補(bǔ)碼,結(jié)果也是正確的。 第2章
28、計(jì)算機(jī)中的數(shù)制和編碼 2.2.5 溢出及其判斷方法溢出及其判斷方法 1. 進(jìn)位與溢出進(jìn)位與溢出 所謂進(jìn)位,是指運(yùn)算結(jié)果的最高位向更高位的進(jìn)位,用來(lái)判斷無(wú)符號(hào)數(shù)運(yùn)算結(jié)果是否超出了計(jì)算機(jī)所能表示的最大無(wú)符號(hào)數(shù)的范圍。 溢出是指帶符號(hào)數(shù)的補(bǔ)碼運(yùn)算溢出,用來(lái)判斷帶符號(hào)數(shù)補(bǔ)碼運(yùn)算結(jié)果是否超出了補(bǔ)碼所能表示的范圍。例如,字長(zhǎng)為n位的帶符號(hào)數(shù),它能表示的補(bǔ)碼范圍為2n1+2n11,如果運(yùn)算結(jié)果超出此范圍,就叫補(bǔ)碼溢出,簡(jiǎn)稱溢出。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 2. 溢出的判斷方法溢出的判斷方法 判斷溢出的方法很多,常見(jiàn)的有: 通過(guò)參加運(yùn)算的兩個(gè)數(shù)的符號(hào)及運(yùn)算結(jié)果的符號(hào)進(jìn)行判斷。 單符號(hào)位法。該方法通過(guò)符號(hào)位
29、和數(shù)值部分最高位的進(jìn)位狀態(tài)來(lái)判斷結(jié)果是否溢出。 雙符號(hào)位法,又稱為變形補(bǔ)碼法。它是通過(guò)運(yùn)算結(jié)果的兩個(gè)符號(hào)位的狀態(tài)來(lái)判斷結(jié)果是否溢出。 上述三種方法中,第一種方法僅適用于手工運(yùn)算時(shí)對(duì)結(jié)果是否溢出的判斷,其他兩種方法在計(jì)算機(jī)中都有使用。限于篇幅,本節(jié)僅通過(guò)具體例子對(duì)第種方法做簡(jiǎn)要介紹。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 若符號(hào)位進(jìn)位狀態(tài)用CF來(lái)表示,當(dāng)符號(hào)位向前有進(jìn)位時(shí),CF=1,否則,CF=0;數(shù)值部分最高位的進(jìn)位狀態(tài)用DF來(lái)表示,當(dāng)該位向前有進(jìn)位時(shí),DF=1,否則,DF=0。單符號(hào)位法就是通過(guò)該兩位進(jìn)位狀態(tài)的異或結(jié)果來(lái)判斷是否溢出的。 (2.2.7) 若OF=1,說(shuō)明結(jié)果溢出;若OF=0,則結(jié)果未
30、溢出。也就是說(shuō),當(dāng)符號(hào)位和數(shù)值部分最高位同時(shí)有進(jìn)位或同時(shí)沒(méi)有進(jìn)位時(shí),結(jié)果沒(méi)有溢出,否則,結(jié)果溢出。 DFCFOF第2章 計(jì)算機(jī)中的數(shù)制和編碼 例2.13 設(shè)有兩個(gè)操作數(shù)x=01000100B,y=01001000B,將這兩個(gè)操作數(shù)送運(yùn)算器做加法運(yùn)算,試問(wèn): 若為無(wú)符號(hào)數(shù),計(jì)算結(jié)果是否正確? 若為帶符號(hào)補(bǔ)碼數(shù),計(jì)算結(jié)果是否溢出? 解解 無(wú)符號(hào)數(shù) 帶符號(hào)數(shù) 01000100 68 +68補(bǔ)+)01001000 +)72 +) +72補(bǔ) 10001100 140 +140補(bǔ)DF=1CF=0第2章 計(jì)算機(jī)中的數(shù)制和編碼 若為無(wú)符號(hào)數(shù),由于CF=0,說(shuō)明結(jié)果未超出8位無(wú)符號(hào)數(shù)所能表達(dá)的數(shù)值范圍(0255
31、),計(jì)算結(jié)果10001100B為無(wú)符號(hào)數(shù),其真值為140,計(jì)算結(jié)果正確。 若為帶符號(hào)數(shù)補(bǔ)碼,由于=1,結(jié)果溢出;這里也可通過(guò)參加運(yùn)算的兩個(gè)數(shù)的符號(hào)及運(yùn)算結(jié)果的符號(hào)進(jìn)行判斷,由于兩操作數(shù)均為正數(shù),而結(jié)果卻為負(fù)數(shù),因而結(jié)果溢出;+68和+72兩數(shù)補(bǔ)碼之和應(yīng)為+140的補(bǔ)碼,而8位帶符號(hào)數(shù)補(bǔ)碼所能表達(dá)的數(shù)值范圍為128+127,結(jié)果超出該范圍,因此結(jié)果是錯(cuò)誤的。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 例例2.14 設(shè)有兩個(gè)操作數(shù)x=11101110B,y=11001000B,將這兩個(gè)操作數(shù)送運(yùn)算器做加法運(yùn)算,試問(wèn): 若為無(wú)符號(hào)數(shù),計(jì)算結(jié)果是否正確? 若為帶符號(hào)補(bǔ)碼數(shù),計(jì)算結(jié)果是否溢出? 解解 無(wú)符號(hào)數(shù) 帶符
32、號(hào)數(shù) 11101110 68 +68補(bǔ)+)11001000 +)72 +) +72補(bǔ) 10110110 140 +140補(bǔ)DF=1CF=01自動(dòng)丟失 第2章 計(jì)算機(jī)中的數(shù)制和編碼 若為無(wú)符號(hào)數(shù),由于CF=1,說(shuō)明結(jié)果超出8位無(wú)符號(hào)數(shù)所能表達(dá)的數(shù)值范圍(0255)。兩操作數(shù)11101110B和11001000B對(duì)應(yīng)的無(wú)符號(hào)數(shù)分別為238和200,兩數(shù)之和應(yīng)為438255,因此,計(jì)算結(jié)果是錯(cuò)誤的。 若為帶符號(hào)數(shù)補(bǔ)碼,由于=0,結(jié)果未溢出。兩操作數(shù)11101110B和11001000B分別為18和56的補(bǔ)碼,其結(jié)果應(yīng)為74的補(bǔ)碼形式,而計(jì)算結(jié)果10110110B正是74的補(bǔ)碼,因此結(jié)果正確。 第2章
33、 計(jì)算機(jī)中的數(shù)制和編碼 2.3 信信 息息 的的 編編 碼碼 2.3.1 二進(jìn)制編碼的十進(jìn)制數(shù)二進(jìn)制編碼的十進(jìn)制數(shù)(BCD編碼編碼) 雖然二進(jìn)制數(shù)對(duì)計(jì)算機(jī)來(lái)說(shuō)是最佳的數(shù)制,但是人們卻不習(xí)慣使用它。為了解決這一矛盾,人們提出了一個(gè)比較適合于十進(jìn)制系統(tǒng)的二進(jìn)制編碼的特殊形式,即將1位十進(jìn)制的09這10個(gè)數(shù)字分別用4位二進(jìn)制碼的組合來(lái)表示,在此基礎(chǔ)上可按位對(duì)任意十進(jìn)制數(shù)進(jìn)行編碼。這就是二進(jìn)制編碼的十進(jìn)制數(shù),簡(jiǎn)稱BCD碼(Binary-Coded Decimal)。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 4位二進(jìn)制數(shù)碼有16種組合(00001111),原則上可任選其中的10個(gè)來(lái)分別代表十進(jìn)制中09這10個(gè)數(shù)字
34、。但為了便于記憶,最常用的是8421 BCD碼,這種編碼從00001111這16種組合中選擇前10個(gè)即00001001來(lái)分別代表十進(jìn)制數(shù)碼09,8、4、2、1分別是這種編碼從高位到低位每位的權(quán)值。BCD碼有兩種形式,即壓縮型BCD碼和非壓縮型BCD碼。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 1壓縮型壓縮型BCD碼碼 壓縮型BCD碼用一個(gè)字節(jié)表示兩位十進(jìn)制數(shù)。例如,10000110B表示十進(jìn)制數(shù)86。 2非壓縮型非壓縮型BCD碼碼 非壓縮型BCD碼用一個(gè)字節(jié)表示一位十進(jìn)制數(shù)。高4位總是0000,低4位用00001001中的一種組合來(lái)表示09中的某一個(gè)十進(jìn)制數(shù)。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 表表2.2
35、8421 BCD 碼部分編碼表碼部分編碼表 十進(jìn)制數(shù) 壓縮型 BCD 碼 非壓縮型 BCD 碼 1 2 3 9 10 11 19 20 21 00000001 00000010 00000011 00001001 00010000 00010001 00011001 00100000 00100001 00000001 00000010 00000011 00001001 00000001 00000000 00000001 00000001 00000001 00001001 00000010 00000000 00000010 00000001 第2章 計(jì)算機(jī)中的數(shù)制和編碼 需要說(shuō)明的是,
36、雖然BCD碼可以簡(jiǎn)化人機(jī)聯(lián)系,但它比純二進(jìn)制編碼效率低,對(duì)同一個(gè)給定的十進(jìn)制數(shù),用BCD碼表示時(shí)需要的位數(shù)比用純二進(jìn)制碼多,而且用BCD碼進(jìn)行運(yùn)算所花的時(shí)間也要更多,計(jì)算過(guò)程更復(fù)雜,因?yàn)锽CD碼是將每個(gè)十進(jìn)制數(shù)用一組4位二進(jìn)制數(shù)來(lái)表示,若將這種BCD碼送計(jì)算機(jī)進(jìn)行運(yùn)算,由于計(jì)算機(jī)總是將數(shù)當(dāng)作二進(jìn)制數(shù)來(lái)運(yùn)算,所以結(jié)果可能出錯(cuò),因此需要對(duì)計(jì)算結(jié)果進(jìn)行必要的修正,才能使結(jié)果為正確的BCD碼形式。詳見(jiàn)本小節(jié)例2.17。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 例例2.15 十進(jìn)制數(shù)與BCD數(shù)相互轉(zhuǎn)換。 將十進(jìn)制數(shù)69.81轉(zhuǎn)換為壓縮型BCD數(shù): 69.81=(0110 1001.1000 0001)BCD 將B
37、CD數(shù)1000 1001.0110 1001轉(zhuǎn)換為十進(jìn)制數(shù): (1000 1001.0110 1001)BCD=89.69 第2章 計(jì)算機(jī)中的數(shù)制和編碼 例例2.16 設(shè)有變量x等于10010110B,當(dāng)該變量分別為無(wú)符號(hào)數(shù)、原碼、補(bǔ)碼、壓縮型BCD碼時(shí),試分別計(jì)算變量x所代表的數(shù)值大小。解解 無(wú)符號(hào)數(shù):x=10010110B=127+026+025+124+023+122+121+020=150原碼:x原=10010110B x= 026+025+124+023+122+121+020= 22補(bǔ)碼:x補(bǔ)=10010110B x原=x補(bǔ)補(bǔ)=11101010B x= 126+125+024+12
38、3+022+121+020= 106 BCD碼:xBCD=10010110B x=96第2章 計(jì)算機(jī)中的數(shù)制和編碼 例2.17 (BCD碼運(yùn)算時(shí)的修正問(wèn)題)用BCD碼求38+49。 解 0011 100038的BCD碼+) 0100 1001 49的BCD碼 1000 0001 81的BCD碼 計(jì)算結(jié)果1000 0001是81的BCD數(shù),而正確結(jié)果應(yīng)為87的BCD數(shù)1000 0111,因此結(jié)果是錯(cuò)誤的。其原因是,十進(jìn)制數(shù)相加應(yīng)該是“逢十進(jìn)一”,而計(jì)算機(jī)按二進(jìn)制數(shù)運(yùn)算,每4位為一組,低4位向高4位進(jìn)位與十六進(jìn)制數(shù)低位向高位進(jìn)位的情況相當(dāng),是“逢十六進(jìn)一”,所以當(dāng)相加結(jié)果超過(guò)9時(shí)將比正確結(jié)果少6,
39、因此結(jié)果出錯(cuò)。解決辦法是對(duì)二進(jìn)制加法運(yùn)算結(jié)果采用“加6修正”,從而將二進(jìn)制加法運(yùn)算的結(jié)果修正為BCD碼加法運(yùn)算結(jié)果。BCD數(shù)相加時(shí),對(duì)二進(jìn)制加法運(yùn)算結(jié)果修正的規(guī)則如下: 第2章 計(jì)算機(jī)中的數(shù)制和編碼 如果兩個(gè)對(duì)應(yīng)位BCD數(shù)相加的結(jié)果向高位無(wú)進(jìn)位,且結(jié)果小于或等于9,則該位不需要修正;若得到的結(jié)果大于9而小于16,則該位需要加6修正。 如果兩個(gè)對(duì)應(yīng)位BCD數(shù)相加的結(jié)果向高位有進(jìn)位(結(jié)果大于或等于16),則該位需要進(jìn)行加6修正。 因此,兩個(gè)BCD數(shù)進(jìn)行運(yùn)算時(shí),首先按二進(jìn)制數(shù)進(jìn)行運(yùn)算,然后必須用相應(yīng)的調(diào)整指令進(jìn)行調(diào)整,從而得到正確的BCD碼結(jié)果。有關(guān)BCD運(yùn)算結(jié)果的調(diào)整指令將在第4章“80 x86指
40、令系統(tǒng)”中介紹。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 2.3.2 ASCII字符編碼字符編碼 所謂字符,是指數(shù)字、字母以及其他一些符號(hào)的總稱。 現(xiàn)代計(jì)算機(jī)不僅用于處理數(shù)值領(lǐng)域的問(wèn)題,而且要處理大量的非數(shù)值領(lǐng)域的問(wèn)題。這樣一來(lái),必然需要計(jì)算機(jī)能對(duì)數(shù)字、字母、文字以及其他一些符號(hào)進(jìn)行識(shí)別和處理,而計(jì)算機(jī)只能處理二進(jìn)制數(shù),因此,通過(guò)輸入/輸出設(shè)備進(jìn)行人機(jī)交換信息時(shí)使用的各種字符也必須按某種規(guī)則,用二進(jìn)制數(shù)碼0和1來(lái)編碼,計(jì)算機(jī)才能進(jìn)行識(shí)別與處理。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 目前,國(guó)際上使用的字符編碼系統(tǒng)有許多種。在微機(jī)、通信設(shè)備和儀器儀表中廣泛使用的是ASCII碼(American Standard
41、Code for Information Interchange)美國(guó)標(biāo)準(zhǔn)信息交換碼。ASCII碼用一個(gè)字節(jié)來(lái)表示一個(gè)字符,采用7位二進(jìn)制代碼來(lái)對(duì)字符進(jìn)行編碼,最高位一般用做校驗(yàn)位。7位ASCII碼能表示27=128種不同的字符,其中包括數(shù)碼(09),英文大、小寫字母,標(biāo)點(diǎn)符號(hào)及控制字符等,見(jiàn)表2.3。 該表的使用方法讀者應(yīng)熟練掌握。如數(shù)字“1”的ASCII碼值為31H,字母“A”的ASCII碼值為41H,符號(hào)“?”的ASCII碼值為3FH等。 第2章 計(jì)算機(jī)中的數(shù)制和編碼 表表2.3 美國(guó)標(biāo)準(zhǔn)信息交換碼美國(guó)標(biāo)準(zhǔn)信息交換碼ASCII(7位代碼位代碼) 0 1 2 3 4 5 6 7 高三位 b6b5b4 低四位 b3b2b1b0 000 001 010 011 100 101 110 111 P 、 NUL DLE SP 0 p 1 0001 SOH DC1 ! 1 A Q a q 2 0010 STX
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州財(cái)經(jīng)職業(yè)學(xué)院《視頻傳播實(shí)務(wù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴陽(yáng)職業(yè)技術(shù)學(xué)院《城鄉(xiāng)規(guī)劃管理與法規(guī)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025陜西建筑安全員-A證考試題庫(kù)附答案
- 2025遼寧建筑安全員-A證考試題庫(kù)附答案
- 2025浙江建筑安全員-C證(專職安全員)考試題庫(kù)
- 貴陽(yáng)康養(yǎng)職業(yè)大學(xué)《民俗與當(dāng)代社會(huì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025陜西省安全員A證考試題庫(kù)附答案
- 2025甘肅省安全員B證(項(xiàng)目經(jīng)理)考試題庫(kù)
- 廣州醫(yī)科大學(xué)《建筑給排水》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州現(xiàn)代信息工程職業(yè)技術(shù)學(xué)院《跨文化交際與面試技巧》2023-2024學(xué)年第一學(xué)期期末試卷
- 云上賞花直播方案
- 數(shù)控生涯發(fā)展展示
- 2024年太平洋人壽保險(xiǎn)股份有限公司招聘筆試參考題庫(kù)含答案解析
- 農(nóng)業(yè)裝備與機(jī)械化的經(jīng)濟(jì)效益與社會(huì)效益
- (完整)中醫(yī)癥候積分量表
- 醫(yī)療團(tuán)隊(duì)管理技巧與策略
- 《功能點(diǎn)計(jì)算方法》課件
- 工會(huì)提案培訓(xùn)課件
- 高空拋物法律知識(shí)講座
- 射頻工程師年終總結(jié)
- 2019統(tǒng)編版高中數(shù)學(xué)A版必修第二冊(cè)教學(xué)計(jì)劃含教學(xué)進(jìn)度表(高一下學(xué)期數(shù)學(xué)教學(xué)計(jì)劃)
評(píng)論
0/150
提交評(píng)論