版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第2章 計算機中的數(shù)制和編碼 第2章 計算機中的數(shù)制和編碼 2.1 無符號數(shù)的表示及運算無符號數(shù)的表示及運算 2.2 帶符號數(shù)的表示及運算帶符號數(shù)的表示及運算 2.3 信息的編碼信息的編碼 2.4 數(shù)的定點與浮點表示法數(shù)的定點與浮點表示法 第2章 計算機中的數(shù)制和編碼 2.1 無符號數(shù)的表示及運算 2.1.1 無符號數(shù)的表示方法無符號數(shù)的表示方法 1. 十進制數(shù)的表示方法 十進制計數(shù)法的特點是: 逢十進一; 使用10個數(shù)字符號(0,1,2,9)的不同組合來表示一個十進制數(shù); 以后綴D或d表示十進制數(shù)(Decimal),但該后綴可以省略。 第2章 計算機中的數(shù)制和編碼 任何一個十進制數(shù)可表示為:
2、 110nmiiiDDN式中:m表示小數(shù)位的位數(shù),n表示整數(shù)位的位數(shù),Di為第i位上的數(shù)符(可以是09十個數(shù)字符號中的任一個)。 例例2.1 138.5(D)= 1012105108103101(2.1.1)第2章 計算機中的數(shù)制和編碼 2. 二進制數(shù)的表示方法二進制數(shù)的表示方法 二進制計數(shù)法的特點是: 逢二進一; 使用2個數(shù)字符號(0,1)的不同組合來表示一個二進制數(shù); 以后綴B或b表示二進制數(shù)(Binary)。 任何一個二進制數(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章 計算機中的數(shù)制和編碼 3. 十六進制數(shù)的表示法十六進制數(shù)的表示法 十六進制計數(shù)法的特點是: 逢十六進一; 使用16個數(shù)字符號(0,1,2,3,9,A,B,C,D,E,F)的不同組合來表示一個十六進制數(shù),其中AF 依次表示1015; 以后綴H或h表示十六進制數(shù)(Hexadecimal)。 第2章 計算機中的數(shù)制和編碼 任何一個十六進制數(shù)可表示為: 116nmiiiHHN式中:m為小數(shù)位的位數(shù),n為整數(shù)位的位數(shù),Hi為第i位上的數(shù)符(可以是0,1,,9,A,B,C,D,E,F十六個數(shù)字符號中的任一個)。 例例2.3 0E5AD.BFH =21012
4、316151611161316101651614(2.1.3)第2章 計算機中的數(shù)制和編碼 一般來說,對于基數(shù)為的任一數(shù)可用多項式表示為: 1nmiiiXXkN(2.1.4) 式中:X為基數(shù),表示X進制;i為位序號;m為小數(shù)部分位數(shù);n為整數(shù)部分的位數(shù);ki為第i位上的數(shù)值,可以為0,1,2,X-1共X個數(shù)字符號中任一個;Xi為第i位的權。 第2章 計算機中的數(shù)制和編碼 2.1.2 各種數(shù)制的相互轉換各種數(shù)制的相互轉換 1任意進制數(shù)轉換為十進制數(shù)任意進制數(shù)轉換為十進制數(shù) 二進制、十六進制以至任意進制數(shù)轉換為十進制數(shù)的方法很簡單,只要按式2.1.2,2.1.3和2.1.4各位按權展開(即該位的數(shù)
5、值乘于該位的權)求和即可。 第2章 計算機中的數(shù)制和編碼 2. 十進制數(shù)轉換成二進制數(shù)十進制數(shù)轉換成二進制數(shù)1 1)整數(shù)部分的轉換整數(shù)部分的轉換下面通過一個簡單的例子對轉換方法進行分析。例如, B2B3B0B2B1B0B3B1012321202121101113BD 可見,要確定13D對應的二進制數(shù),只需從右到左分別確定 B0,B1,B2,B3即可。 第2章 計算機中的數(shù)制和編碼 式(2.1.5)右側除以2: 商為 ,余數(shù)為1,此余數(shù)即為B0; 商再除以2: 商為 ,余數(shù)為0,此余數(shù)即為B1; 商再除以2: 商為 ,余數(shù)為1,次余數(shù)即為B2; 商再除以2: 商為(商為0時停止) ,余數(shù)為1,此
6、余數(shù)即為 B3。 012202121012121021第2章 計算機中的數(shù)制和編碼 由以上過程可以得出十進制整數(shù)部分轉換為二進制數(shù)的方法:除以基數(shù)(2)取余數(shù),先為低位(B0)后為高位。 顯然,該方法也適用于將十進制整數(shù)轉換為八進制整數(shù)(基數(shù)為8)、十六進制整數(shù)(基數(shù)為16)以至其它任何進制整數(shù)。 第2章 計算機中的數(shù)制和編碼 2) 小數(shù)部分的轉換同樣用一個簡單例子說明十進制小數(shù)部分的轉換方法。例如, B-1B-2B-1B-221212111 .075.0BD要將一個十進制小數(shù)轉換為二進制小數(shù),實際上就是求B-1,B-2,給式(2.1.6)右側乘以基數(shù)2得: (2.1.6)1211整數(shù)部分為B
7、-1小數(shù)部分第2章 計算機中的數(shù)制和編碼 整數(shù)部分為1,此即為B-1。小數(shù)部分為12-1。 小數(shù)部分再乘以基數(shù)2得:整數(shù)部分為1,此即為B-2。 此時小數(shù)部分已為0,停止往下計算(若不為0,繼續(xù)求B-3,B-4,直到小數(shù)部分為0或小數(shù)部分的位數(shù)滿足一定精度時為止) 第2章 計算機中的數(shù)制和編碼 由以上分析可得到十進制小數(shù)部分轉換為二進制小數(shù)的方法: 小數(shù)部分乘以基數(shù)(2)取整數(shù)(0或1),先為高位(B-1)后為低位。 顯然,該方法也適用于將十進制小數(shù)轉換為八進制小數(shù)(基數(shù)為8)、十六進制小數(shù)(基數(shù)為16)以至其它任何進制小數(shù)。 第2章 計算機中的數(shù)制和編碼 例例2.4 將13.75轉換為二進制
8、數(shù)。 分別將整數(shù)和小數(shù)部分進行轉換: 整數(shù)部分:13=1101B 小數(shù)部分:0.75=0.11B 因此,13.75=1101.11B 第2章 計算機中的數(shù)制和編碼 例例2.5 將28.75轉換為十六進制數(shù) 整數(shù)部分:28=1CH 小數(shù)部分:0.7516=12.0, B-1=CH,小數(shù)部分已為0,停止計算。因此,28.75=1C.CH 第2章 計算機中的數(shù)制和編碼 3二進制數(shù)與十六進制數(shù)之間的轉換二進制數(shù)與十六進制數(shù)之間的轉換 因為24=16,即可用四位二進制數(shù)表示一位十六進制數(shù),所以可得到如下所述的二進制數(shù)與十六進制數(shù)之間的轉換方法。 將二進制數(shù)轉換為十六進制數(shù)的方法將二進制數(shù)轉換為十六進制數(shù)
9、的方法:以小數(shù)點為界,向左(整數(shù)部分)每四位為一組,高位不足4位時補0;向右(小數(shù)部分)每四位為一組,低位不足4位時補0。然后分別用一個16進制數(shù)表示每一組中的4位二進制數(shù)。 將十六進制數(shù)轉換為二進制數(shù)的方法:將十六進制數(shù)轉換為二進制數(shù)的方法:直接將每一位十六進制數(shù)寫成其對應的四位二進制數(shù)。 第2章 計算機中的數(shù)制和編碼 例例2.6 1101110.01011B=0110,1110.0101,1000B=6E.58H 2F.1BH=10 1111.0001 1011B 第2章 計算機中的數(shù)制和編碼 2.1.3 二進制數(shù)的運算 1. 二進制數(shù)的算術運算 (1) 加: 0+0=0 0+1=1 1+
10、0=1 1+1=0(進1) (2) 減: 0-0=0 1-1=0 1-0=1 0-1=1(借位) (3) 乘: 00=0 01=0 10=0 11=1 (4) 除: 二進制除法是乘法的逆運算。 第2章 計算機中的數(shù)制和編碼 2. 二進制數(shù)的邏輯運算二進制數(shù)的邏輯運算 (1) “與“運算(AND). “與”運算又稱邏輯乘,可用符號“”或“”表示。運算規(guī)則如下:00=0 01=0 10=0 11=1 可以看出,只有當兩個變量均為“1”時,“與”的結果才為“1”。 第2章 計算機中的數(shù)制和編碼 (2) “或”運算(OR) “或”運算又稱邏輯加,可用符號“”或“+”表示。運算規(guī)則如下:00=0 01=
11、1 10=1 11=1 可以看出,兩個變量只要有一個為“1”,“或”的結果就為“1”。 第2章 計算機中的數(shù)制和編碼 (3) “非”運算(NOT) 變量的“非”運算結果用表示。邏輯“非”運算規(guī)則如下: (4) “異或”運算(XOR) “異或”運算可用符號“”表示。運算規(guī)則如下: 可以看出,兩變量只要不同,“異或”運算的結果就為“1”。 10 01 011101110000第2章 計算機中的數(shù)制和編碼 (4) “異或”運算(XOR) “異或”運算可用符號“”表示。運算規(guī)則如下: 可以看出,兩變量只要不同,“異或”運算的結果就為“1”。 011101110000第2章 計算機中的數(shù)制和編碼 例例
12、2.7 A=11110101B, B=00110000B,求 ?BABABABABBA00110000BBA11110101BBA11000101BA00001010BB11001111解解第2章 計算機中的數(shù)制和編碼 2.2 帶符號數(shù)的表示及運算帶符號數(shù)的表示及運算 2.2.1 機器數(shù)與真值 日常生活中遇到的數(shù),除了上述無符號數(shù)外,還有帶符號數(shù)。對于帶符號的二進制數(shù),其正負符號如何表示呢?在計算機中,為了區(qū)別正數(shù)和負數(shù),通常用二進制數(shù)的最高位表示數(shù)的符號。對于一個字節(jié)型二進制數(shù)來說,D7位為符號位,D6D0位為數(shù)值位。在符號位中,規(guī)定用“0”表示正,“1”表示負,而數(shù)值位表示該數(shù)的數(shù)值大小。
13、 把一個數(shù)及其符號位在機器中的一組二進制數(shù)表示形式,稱為“機器數(shù)”。機器數(shù)所表示的值稱為該機器數(shù)的“真值”。 第2章 計算機中的數(shù)制和編碼 2.2.2 機器數(shù)的表示方法 1. 原碼設數(shù)x的原碼記作x原,如機器字長為n,則原碼定義如下: 0) 12(|2120111xxxxxnnn原 在原碼表示法中,最高位為符號位(正數(shù)為0,負數(shù)為1),其余數(shù)字位表示數(shù)的絕對值。 (2.2.1)第2章 計算機中的數(shù)制和編碼 例如,當機器字長n=8時, +0原=00000000B -0原=27+0(按定義計算,下同)=10000000B +8原=00001000B-8原=27+8=10001000B +127原=
14、01111111B-127原=27+127=11111111B 當機器字長n=16時, +0原=0000000000000000B-0原=215+0=1000000000000000B +8原=0000000000001000B-8原=215+8=1000000000001000B +32767原=0111111111111111B-32767原=215+32767=1111111111111111B 第2章 計算機中的數(shù)制和編碼 可以看出,原碼表示數(shù)的范圍是。8位二進制原碼表示數(shù)的范圍為-127+127,16位二進制原碼表示數(shù)的范圍為-32767+32767;“0”的原碼有兩種表示法:000
15、00000表示+0,10000000表示-0。 第2章 計算機中的數(shù)制和編碼 原碼表示法簡單直觀,且與真值的轉換很方便,但不便于在計算機中進行加減運算。如進行兩數(shù)相加,必須先判斷兩個數(shù)的符號是否相同。如果相同,則進行加法運算,否則進行減法運算。如進行兩數(shù)相減,必須比較兩數(shù)的絕對值大小,再由大數(shù)減小數(shù),結果的符號要和絕對值大的數(shù)的符號一致。按上述運算方法設計的算術運算電路很復雜。因此,計算機中通常使用補碼進行加減運算,這樣就引入了反碼表示法和補碼表示法。 第2章 計算機中的數(shù)制和編碼 2. 反碼設數(shù)x的反碼記作x反,如機器字長為n,則反碼定義如下: 0) 12(|) 12(12011xxxxxn
16、nn反 正數(shù)的反碼與其原碼相同。例如,當機器字長n=8時: +0反=+0原=00000000B +127反=+127原=01111111B當機器字長n=16時: +8反=+8原=0000000000001000B +127反=+127原=0000000001111111B (2.2.2)第2章 計算機中的數(shù)制和編碼 負數(shù)的反碼是在原碼基礎上,符號位不變(仍為1),數(shù)值位按位取反。例如,當機器字長n=8時: -0反=(28-1)-0=11111111B -127反=(28-1)-127=10000000B 反碼表示數(shù)的范圍是。8位二進制反碼表示數(shù)的范圍為-127+127,16位二進制反碼表示數(shù)的
17、范圍為-32767+32767;“0”的反碼有兩種表示法:00000000表示+0,11111111表示-0。 第2章 計算機中的數(shù)制和編碼 3. 補碼設數(shù)x的補碼記作x補,如機器字長為n,則補碼定義如下: 02|212011xxxxxnnn補正數(shù)的補碼與其原碼、反碼相同。例如,當機器字長n=8時:+8補=+8反=+8原=00001000B+127補=+127反=+127原=01111111B當機器字長n=16時:+8補=+8反=+8原=0000000000001000B+127補=+127反=+127原=0000000001111111B (2.2.3)第2章 計算機中的數(shù)制和編碼 負數(shù)的補
18、碼是在原碼基礎上,符號位不變(仍為1),數(shù)值位按位取反,末位加1;或在反碼基礎上末位加1。例如,當機器字長n=8時:-8原=10001000B-127原=11111111B-8反=11110111B-127反=10000000B-8補=28-8=11111000B-127補=28-127=10000001B可以看出,補碼表示數(shù)的范圍是。8位二進制補碼表示數(shù)的范圍為-128+127,16位二進制反碼表示數(shù)的范圍為-32768+32767。8位二進制數(shù)的原碼、反碼和補碼如表2.1所示。 第2章 計算機中的數(shù)制和編碼 表表2.1 8位二進制數(shù)的原碼、反碼和補碼表位二進制數(shù)的原碼、反碼和補碼表 帶 符
19、 號 數(shù) 二進制數(shù) 無符號十進制數(shù) 原碼 反碼 補碼 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章 計算機中的數(shù)制和編碼 2.2.3 真值
20、與機器數(shù)之間的轉換真值與機器數(shù)之間的轉換 1原碼轉換為真值原碼轉換為真值 根據(jù)原碼定義,將原碼數(shù)值位各位按權展開求和,由符號位決定數(shù)的正負即可由原碼求出真值。 例例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章 計算機中的數(shù)制和編碼 2. 反碼轉換為真值 要求反碼的真值,只要先求出反碼對應的原碼,再按上述原碼轉換為真值的方法即可求出其真值。 正數(shù)的原碼是反碼本身。 負數(shù)的原碼可在反碼基礎上,符號位仍為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章 計算機中的數(shù)制和編碼 3. 補碼轉換為真值同理,要求補碼的真值,也要先求出補碼對應的原碼。正數(shù)的原碼與補碼相同。負數(shù)的原碼可在補碼基礎上再次求補,即:補補原xx(2.2.4)第2章 計算機中的數(shù)制和編碼 例例2.10 已知x補=00001111B,y補=11100101B,求x和y解解
22、x原= x補=00001111B, x=+(026+025+024+123+122+121+120)=15 y原=y補補=10011011B, y=-(026+025+124+123+022+121+120)= -27 第2章 計算機中的數(shù)制和編碼 2.2.4 補碼的加減運算補碼的加減運算 1. 補碼加法補碼加法 在計算機中,凡是帶符號數(shù)一律用補碼表示,運算結果自然也是補碼。其運算特點是:符號位和數(shù)值位一起參加運算,并且自動獲得結果(包括符號位與數(shù)值位)。 補碼加法的運算規(guī)則為:即:兩數(shù)補碼的和等于兩數(shù)和的補碼。 補補補yxyx(2.2.5) 第2章 計算機中的數(shù)制和編碼 例例2.11 已知
23、+51補=0011 0011B,+66補=0100 0010B, -51補=1100 1101B, -66補=1011 1110B 求求 +66補+51補=?+66補+-51補=?-66補+-51補=? 解解 二進制(補碼)加法 十進制加法0100 0010 + 66補 + 66+)0011 0011 + 51補 +) + 510111 0101 +117補 +117 第2章 計算機中的數(shù)制和編碼 由于+66補+51補=(+66)+(+55)補=01110101B結果為正,因此(+66)+(+55)原=(+66)+(+55)補=01110101B其真值為+117,計算結果正確。 二進制(補碼)
24、加法 十進制加法 0100 0010 + 66補 +66+) 1100 1101 51補 +) 51 0000 1111 +15補 +151自動丟失第2章 計算機中的數(shù)制和編碼 由于+66補+51補=(+66)+(55)補=0000111B結果為正,因此(+66)+(55)原=(+66)+(55)補=00001111其真值為+15,計算結果正確。 二進制(補碼)加法 十進制加法 1011 1110 - 66補 -66+) 1100 1101 51補 +) 51 1000 1011 -117補 -1171自動丟失第2章 計算機中的數(shù)制和編碼 由于66補+51補=10001011B=(66)+(5
25、5)補 結果為負,因此 (66)+(55)原=(66)+(55)補補=11110101B其真值為117,計算結果正確。 可以看出,不論被加數(shù)、加數(shù)是正數(shù)還是負數(shù),只要直接用它們的補碼直接相加,當結果不超出補碼所表示的范圍時,計算結果便是正確的補碼形式。但當計算結果超出補碼表示范圍時,結果就不正確了,這種情況稱為溢出。 第2章 計算機中的數(shù)制和編碼 2. 補碼減法補碼減法補碼減法的運算規(guī)則為: 補補補補補yxyxyx(2.2.6) 第2章 計算機中的數(shù)制和編碼 例例2.12 已知+51補=0011 0011B,+66補=0100 0010B51補=1100 1101B,66補=1011 1110
26、B求 +66補+51補=?66補 51補=? 解 +66補 +51補=+66補+51補 66補 51補=66補+51補 第2章 計算機中的數(shù)制和編碼 二進制(補碼)加法 十進制加法 0100 0010 + 66補 +66+) 1100 1101 51補 -) +51 0000 1111 +15補 +151自動丟失 二進制(補碼)加法 十進制加法 1011 1110 - 66補 -66+) 0011 0011 +51補 -) -51 1111 0001 -15補 -15第2章 計算機中的數(shù)制和編碼 可以看出,無論被減數(shù)、減數(shù)是正數(shù)還是負數(shù),上述補碼減法的規(guī)則都是正確的。同樣,由最高位向更高位的進
27、位會自動丟失而不影響運算結果的正確性。 計算機中帶符號數(shù)用補碼表示時有如下優(yōu)點: 可以將減法運算變?yōu)榧臃ㄟ\算,因此可使用同一個運算器實現(xiàn)加法和減法運算,簡化了電路。 第2章 計算機中的數(shù)制和編碼 無符號數(shù)和帶符號數(shù)的加法運算可以用同一個加法器實現(xiàn),結果都是正確的。例如: 無符號數(shù) 帶符號數(shù) 11100001 225 31補+) 00001101 +) 13 +) +13補 11101110 238 18補 若兩操作數(shù)為無符號數(shù)時,計算結果為無符號數(shù)11101110B,其真值為238,結果正確;若兩操作數(shù)為補碼形式,計算結果也為補碼形式,11101110B為18的補碼,結果也是正確的。 第2章
28、計算機中的數(shù)制和編碼 2.2.5 溢出及其判斷方法溢出及其判斷方法 1. 進位與溢出進位與溢出 所謂進位,是指運算結果的最高位向更高位的進位,用來判斷無符號數(shù)運算結果是否超出了計算機所能表示的最大無符號數(shù)的范圍。 溢出是指帶符號數(shù)的補碼運算溢出,用來判斷帶符號數(shù)補碼運算結果是否超出了補碼所能表示的范圍。例如,字長為n位的帶符號數(shù),它能表示的補碼范圍為2n1+2n11,如果運算結果超出此范圍,就叫補碼溢出,簡稱溢出。 第2章 計算機中的數(shù)制和編碼 2. 溢出的判斷方法溢出的判斷方法 判斷溢出的方法很多,常見的有: 通過參加運算的兩個數(shù)的符號及運算結果的符號進行判斷。 單符號位法。該方法通過符號位
29、和數(shù)值部分最高位的進位狀態(tài)來判斷結果是否溢出。 雙符號位法,又稱為變形補碼法。它是通過運算結果的兩個符號位的狀態(tài)來判斷結果是否溢出。 上述三種方法中,第一種方法僅適用于手工運算時對結果是否溢出的判斷,其他兩種方法在計算機中都有使用。限于篇幅,本節(jié)僅通過具體例子對第種方法做簡要介紹。 第2章 計算機中的數(shù)制和編碼 若符號位進位狀態(tài)用CF來表示,當符號位向前有進位時,CF=1,否則,CF=0;數(shù)值部分最高位的進位狀態(tài)用DF來表示,當該位向前有進位時,DF=1,否則,DF=0。單符號位法就是通過該兩位進位狀態(tài)的異或結果來判斷是否溢出的。 (2.2.7) 若OF=1,說明結果溢出;若OF=0,則結果未
30、溢出。也就是說,當符號位和數(shù)值部分最高位同時有進位或同時沒有進位時,結果沒有溢出,否則,結果溢出。 DFCFOF第2章 計算機中的數(shù)制和編碼 例2.13 設有兩個操作數(shù)x=01000100B,y=01001000B,將這兩個操作數(shù)送運算器做加法運算,試問: 若為無符號數(shù),計算結果是否正確? 若為帶符號補碼數(shù),計算結果是否溢出? 解解 無符號數(shù) 帶符號數(shù) 01000100 68 +68補+)01001000 +)72 +) +72補 10001100 140 +140補DF=1CF=0第2章 計算機中的數(shù)制和編碼 若為無符號數(shù),由于CF=0,說明結果未超出8位無符號數(shù)所能表達的數(shù)值范圍(0255
31、),計算結果10001100B為無符號數(shù),其真值為140,計算結果正確。 若為帶符號數(shù)補碼,由于=1,結果溢出;這里也可通過參加運算的兩個數(shù)的符號及運算結果的符號進行判斷,由于兩操作數(shù)均為正數(shù),而結果卻為負數(shù),因而結果溢出;+68和+72兩數(shù)補碼之和應為+140的補碼,而8位帶符號數(shù)補碼所能表達的數(shù)值范圍為128+127,結果超出該范圍,因此結果是錯誤的。 第2章 計算機中的數(shù)制和編碼 例例2.14 設有兩個操作數(shù)x=11101110B,y=11001000B,將這兩個操作數(shù)送運算器做加法運算,試問: 若為無符號數(shù),計算結果是否正確? 若為帶符號補碼數(shù),計算結果是否溢出? 解解 無符號數(shù) 帶符
32、號數(shù) 11101110 68 +68補+)11001000 +)72 +) +72補 10110110 140 +140補DF=1CF=01自動丟失 第2章 計算機中的數(shù)制和編碼 若為無符號數(shù),由于CF=1,說明結果超出8位無符號數(shù)所能表達的數(shù)值范圍(0255)。兩操作數(shù)11101110B和11001000B對應的無符號數(shù)分別為238和200,兩數(shù)之和應為438255,因此,計算結果是錯誤的。 若為帶符號數(shù)補碼,由于=0,結果未溢出。兩操作數(shù)11101110B和11001000B分別為18和56的補碼,其結果應為74的補碼形式,而計算結果10110110B正是74的補碼,因此結果正確。 第2章
33、 計算機中的數(shù)制和編碼 2.3 信信 息息 的的 編編 碼碼 2.3.1 二進制編碼的十進制數(shù)二進制編碼的十進制數(shù)(BCD編碼編碼) 雖然二進制數(shù)對計算機來說是最佳的數(shù)制,但是人們卻不習慣使用它。為了解決這一矛盾,人們提出了一個比較適合于十進制系統(tǒng)的二進制編碼的特殊形式,即將1位十進制的09這10個數(shù)字分別用4位二進制碼的組合來表示,在此基礎上可按位對任意十進制數(shù)進行編碼。這就是二進制編碼的十進制數(shù),簡稱BCD碼(Binary-Coded Decimal)。 第2章 計算機中的數(shù)制和編碼 4位二進制數(shù)碼有16種組合(00001111),原則上可任選其中的10個來分別代表十進制中09這10個數(shù)字
34、。但為了便于記憶,最常用的是8421 BCD碼,這種編碼從00001111這16種組合中選擇前10個即00001001來分別代表十進制數(shù)碼09,8、4、2、1分別是這種編碼從高位到低位每位的權值。BCD碼有兩種形式,即壓縮型BCD碼和非壓縮型BCD碼。 第2章 計算機中的數(shù)制和編碼 1壓縮型壓縮型BCD碼碼 壓縮型BCD碼用一個字節(jié)表示兩位十進制數(shù)。例如,10000110B表示十進制數(shù)86。 2非壓縮型非壓縮型BCD碼碼 非壓縮型BCD碼用一個字節(jié)表示一位十進制數(shù)。高4位總是0000,低4位用00001001中的一種組合來表示09中的某一個十進制數(shù)。 第2章 計算機中的數(shù)制和編碼 表表2.2
35、8421 BCD 碼部分編碼表碼部分編碼表 十進制數(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章 計算機中的數(shù)制和編碼 需要說明的是,
36、雖然BCD碼可以簡化人機聯(lián)系,但它比純二進制編碼效率低,對同一個給定的十進制數(shù),用BCD碼表示時需要的位數(shù)比用純二進制碼多,而且用BCD碼進行運算所花的時間也要更多,計算過程更復雜,因為BCD碼是將每個十進制數(shù)用一組4位二進制數(shù)來表示,若將這種BCD碼送計算機進行運算,由于計算機總是將數(shù)當作二進制數(shù)來運算,所以結果可能出錯,因此需要對計算結果進行必要的修正,才能使結果為正確的BCD碼形式。詳見本小節(jié)例2.17。 第2章 計算機中的數(shù)制和編碼 例例2.15 十進制數(shù)與BCD數(shù)相互轉換。 將十進制數(shù)69.81轉換為壓縮型BCD數(shù): 69.81=(0110 1001.1000 0001)BCD 將B
37、CD數(shù)1000 1001.0110 1001轉換為十進制數(shù): (1000 1001.0110 1001)BCD=89.69 第2章 計算機中的數(shù)制和編碼 例例2.16 設有變量x等于10010110B,當該變量分別為無符號數(shù)、原碼、補碼、壓縮型BCD碼時,試分別計算變量x所代表的數(shù)值大小。解解 無符號數(shù):x=10010110B=127+026+025+124+023+122+121+020=150原碼:x原=10010110B x= 026+025+124+023+122+121+020= 22補碼:x補=10010110B x原=x補補=11101010B x= 126+125+024+12
38、3+022+121+020= 106 BCD碼:xBCD=10010110B x=96第2章 計算機中的數(shù)制和編碼 例2.17 (BCD碼運算時的修正問題)用BCD碼求38+49。 解 0011 100038的BCD碼+) 0100 1001 49的BCD碼 1000 0001 81的BCD碼 計算結果1000 0001是81的BCD數(shù),而正確結果應為87的BCD數(shù)1000 0111,因此結果是錯誤的。其原因是,十進制數(shù)相加應該是“逢十進一”,而計算機按二進制數(shù)運算,每4位為一組,低4位向高4位進位與十六進制數(shù)低位向高位進位的情況相當,是“逢十六進一”,所以當相加結果超過9時將比正確結果少6,
39、因此結果出錯。解決辦法是對二進制加法運算結果采用“加6修正”,從而將二進制加法運算的結果修正為BCD碼加法運算結果。BCD數(shù)相加時,對二進制加法運算結果修正的規(guī)則如下: 第2章 計算機中的數(shù)制和編碼 如果兩個對應位BCD數(shù)相加的結果向高位無進位,且結果小于或等于9,則該位不需要修正;若得到的結果大于9而小于16,則該位需要加6修正。 如果兩個對應位BCD數(shù)相加的結果向高位有進位(結果大于或等于16),則該位需要進行加6修正。 因此,兩個BCD數(shù)進行運算時,首先按二進制數(shù)進行運算,然后必須用相應的調(diào)整指令進行調(diào)整,從而得到正確的BCD碼結果。有關BCD運算結果的調(diào)整指令將在第4章“80 x86指
40、令系統(tǒng)”中介紹。 第2章 計算機中的數(shù)制和編碼 2.3.2 ASCII字符編碼字符編碼 所謂字符,是指數(shù)字、字母以及其他一些符號的總稱。 現(xiàn)代計算機不僅用于處理數(shù)值領域的問題,而且要處理大量的非數(shù)值領域的問題。這樣一來,必然需要計算機能對數(shù)字、字母、文字以及其他一些符號進行識別和處理,而計算機只能處理二進制數(shù),因此,通過輸入/輸出設備進行人機交換信息時使用的各種字符也必須按某種規(guī)則,用二進制數(shù)碼0和1來編碼,計算機才能進行識別與處理。 第2章 計算機中的數(shù)制和編碼 目前,國際上使用的字符編碼系統(tǒng)有許多種。在微機、通信設備和儀器儀表中廣泛使用的是ASCII碼(American Standard
41、Code for Information Interchange)美國標準信息交換碼。ASCII碼用一個字節(jié)來表示一個字符,采用7位二進制代碼來對字符進行編碼,最高位一般用做校驗位。7位ASCII碼能表示27=128種不同的字符,其中包括數(shù)碼(09),英文大、小寫字母,標點符號及控制字符等,見表2.3。 該表的使用方法讀者應熟練掌握。如數(shù)字“1”的ASCII碼值為31H,字母“A”的ASCII碼值為41H,符號“?”的ASCII碼值為3FH等。 第2章 計算機中的數(shù)制和編碼 表表2.3 美國標準信息交換碼美國標準信息交換碼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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024門禁工程合同
- 2024閘門采購合同模板大全
- 2024榨菜種植與農(nóng)業(yè)電商人才培訓合作合同3篇
- 2025年度文化旅游代理股權轉讓及項目運營合同4篇
- 2025年度智能社區(qū)視頻監(jiān)控系統(tǒng)工程承包協(xié)議4篇
- 2025年度應急物流承運商合作協(xié)議范本4篇
- 2024音樂制作合同:錄音工作室合同范本版B版
- 2025年度桉樹苗木線上線下融合發(fā)展合同3篇
- 2025年度知識產(chǎn)權運營丨合伙人共同運營專利技術的合同4篇
- 2024舞臺建設施工合同協(xié)議書
- 2024版智慧電力解決方案(智能電網(wǎng)解決方案)
- 公司SWOT分析表模板
- 小學預防流行性感冒應急預案
- 肺癌術后出血的觀察及護理
- 聲紋識別簡介
- 生物醫(yī)藥大數(shù)據(jù)分析平臺建設-第1篇
- 基于Android的天氣預報系統(tǒng)的設計與實現(xiàn)
- 沖鋒舟駕駛培訓課件
- 美術家協(xié)會會員申請表
- 聚合收款服務流程
- 中石化浙江石油分公司中石化溫州靈昆油庫及配套工程項目環(huán)境影響報告書
評論
0/150
提交評論