ch計算機(jī)中的數(shù)制和編碼實用_第1頁
ch計算機(jī)中的數(shù)制和編碼實用_第2頁
ch計算機(jī)中的數(shù)制和編碼實用_第3頁
ch計算機(jī)中的數(shù)制和編碼實用_第4頁
ch計算機(jī)中的數(shù)制和編碼實用_第5頁
已閱讀5頁,還剩98頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

會計學(xué)1ch計算機(jī)中的數(shù)制和編碼實用2計算機(jī)中的數(shù)制和編碼

計算機(jī)的基本功能是進(jìn)行數(shù)據(jù)和信息的處理。數(shù)據(jù)、信息以及為處理這些數(shù)據(jù)和信息而編寫的程序的代碼都必須輸入到計算機(jī)中。由于電子器件容易實現(xiàn)對兩種狀態(tài)的表示,因此,計算機(jī)中的數(shù)字、字符和指令等一般都使用二進(jìn)制編碼來表示。在第2章中,將介紹無符號數(shù)的表示方法、各種數(shù)制的相互轉(zhuǎn)換以及二進(jìn)制數(shù)的運算規(guī)則等;將重點介紹帶符號數(shù)的表示方法、補碼加減法運算預(yù)計運算溢出的判斷方法;最后介紹十進(jìn)制數(shù)的BCD編碼和字符(包括字母、數(shù)字和符號)的ASCII編碼;介紹數(shù)的定點和浮點表示方法。第1頁/共103頁32.1

無符號數(shù)的表示及運算

2.1.1

無符號數(shù)的表示方法

1.

十進(jìn)制數(shù)的表示方法

十進(jìn)制計數(shù)法的特點是:①逢十進(jìn)一;②使用10個數(shù)字符號(0,1,2,……,9)的不同組合來表示一個十進(jìn)制數(shù);③以后綴D或d表示十進(jìn)制數(shù)(Decimal),但該后綴可以省略。第2頁/共103頁4任何一個十進(jìn)制數(shù)可表示為:式中:m表示小數(shù)位的位數(shù),n表示整數(shù)位的位數(shù),Di為第i位上的數(shù)符(可以是09十個數(shù)字符號中的任一個)。例2.1138.5(D)=第3頁/共103頁5

2.

二進(jìn)制數(shù)的表示方法

二進(jìn)制計數(shù)法的特點是:①逢二進(jìn)一;②使用2個數(shù)字符號(0,1)的不同組合來表示一個二進(jìn)制數(shù);③以后綴B或b表示二進(jìn)制數(shù)(Binary)。任何一個二進(jìn)制數(shù)可表示為:式中:m為小數(shù)位的位數(shù),n為整數(shù)位的位數(shù),Bi為第i位上的數(shù)符(0或1)。例2.21101.11B=第4頁/共103頁63.十六進(jìn)制數(shù)的表示法

十六進(jìn)制計數(shù)法的特點是:①逢十六進(jìn)一;②使用16個數(shù)字符號(0,1,2,3……,9,A,B,C,D,E,F)的不同組合來表示一個十六進(jìn)制數(shù),其中AF依次表示1015;③以后綴H或h表示十六進(jìn)制數(shù)(Hexadecimal)。

第5頁/共103頁7任何一個十六進(jìn)制數(shù)可表示為:式中:m為小數(shù)位的位數(shù),n為整數(shù)位的位數(shù),Hi為第i位上的數(shù)符(可以是0,1,…,9,A,B,C,D,E,F十六個數(shù)字符號中的任一個)。例2.30E5AD.BFH=第6頁/共103頁8一般來說,對于基數(shù)為的任一數(shù)可用多項式表示為:(2.1.4)式中:X為基數(shù),表示X進(jìn)制;i為位序號;m為小數(shù)部分位數(shù);n為整數(shù)部分的位數(shù);ki為第i位上的數(shù)值,可以為0,1,2,…,X-1共X個數(shù)字符號中任一個;Xi為第i位的權(quán)。第7頁/共103頁92.1.2

各種數(shù)制的相互轉(zhuǎn)換

1.任意進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)二進(jìn)制、十六進(jìn)制以至任意進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的方法很簡單,只要按式2.1.2,2.1.3和2.1.4各位按權(quán)展開(即該位的數(shù)值乘于該位的權(quán))求和即可。第8頁/共103頁102.

十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)

1).整數(shù)部分的轉(zhuǎn)換下面通過一個簡單的例子對轉(zhuǎn)換方法進(jìn)行分析。例如,B2B3B0B2B1B0B3B1

可見,要確定13D對應(yīng)的二進(jìn)制數(shù),只需從右到左分別確定系數(shù)B0,B1,B2,B3……即可。第9頁/共103頁11

式(2.1.5)右側(cè)除以2:商為,余數(shù)為1,此余數(shù)即為B0;商再除以2:商為,余數(shù)為0,此余數(shù)即為B1;商再除以2:商為,余數(shù)為1,次余數(shù)即為B2;商再除以2:商為(商為0時停止),余數(shù)為1,此余數(shù)即為B3。第10頁/共103頁12

由以上過程可以得出十進(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ù)。第11頁/共103頁132)

小數(shù)部分的轉(zhuǎn)換同樣用一個簡單例子說明十進(jìn)制小數(shù)部分的轉(zhuǎn)換方法。例如,B-1B-2B-1B-2要將一個十進(jìn)制小數(shù)轉(zhuǎn)換為二進(jìn)制小數(shù),實際上就是求

B-1,B-2,……給式(2.1.6)右側(cè)乘以基數(shù)2得:(2.1.6)整數(shù)部分為B-1小數(shù)部分第12頁/共103頁14

整數(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ù)滿足一定精度時為止)。第13頁/共103頁15

由以上分析可得到十進(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ù)。第14頁/共103頁16

例2.4

將13.75轉(zhuǎn)換為二進(jìn)制數(shù)。分別將整數(shù)和小數(shù)部分進(jìn)行轉(zhuǎn)換:整數(shù)部分:13=1101B

小數(shù)部分:0.75=0.11B

因此,13.75=1101.11B第15頁/共103頁17例2.5

將28.75轉(zhuǎn)換為十六進(jìn)制數(shù)整數(shù)部分:28=1CH

小數(shù)部分:,B-1=CH,小數(shù)部分已為0,停止計算。因此,28.75=1C.CH第16頁/共103頁18

3.二進(jìn)制數(shù)與十六進(jìn)制數(shù)之間的轉(zhuǎn)換

因為24=16,即可用四位二進(jìn)制數(shù)表示一位十六進(jìn)制數(shù),所以可得到如下所述的二進(jìn)制數(shù)與十六進(jìn)制數(shù)之間的轉(zhuǎn)換方法。

將二進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù)的方法:以小數(shù)點為界,向左(整數(shù)部分)每四位為一組,高位不足4位時補0;向右(小數(shù)部分)每四位為一組,低位不足4位時補0。然后分別用一個16進(jìn)制數(shù)表示每一組中的4位二進(jìn)制數(shù)。將十六進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)的方法:直接將每一位十六進(jìn)制數(shù)寫成其對應(yīng)的四位二進(jìn)制數(shù)。第17頁/共103頁19例2.6

1101110.01011B=0110,1110.0101,1000B=6E.58H2F.1BH=101111.00011011B

第18頁/共103頁202.1.3

二進(jìn)制數(shù)的運算

1.

二進(jìn)制數(shù)的算術(shù)運算

(1)

加: 0+0=00+1=11+0=11+1=0(進(jìn)1)

(2)減: 0-0=01-1=01-0=10-1=1(借位)

(3)

乘: 00=001=010=011=1 (4)

除:二進(jìn)制除法是乘法的逆運算。第19頁/共103頁212.

二進(jìn)制數(shù)的邏輯運算(1)

“與“運算(AND).“與”運算又稱邏輯乘,可用符號“”或“”表示。運算規(guī)則如下:00=001=010=011=1

可以看出,只有當(dāng)兩個變量均為“1”時,“與”的結(jié)果才為“1”。第20頁/共103頁22

(2)

“或”運算(OR)“或”運算又稱邏輯加,可用符號“”或“+”表示。運算規(guī)則如下:00=001=110=111=1

可以看出,兩個變量只要有一個為“1”,“或”的結(jié)果就為“1”。第21頁/共103頁23

(3)

“非”運算(NOT)變量的“非”運算結(jié)果用表示。邏輯“非”運算規(guī)則如下:(4)

“異或”運算(XOR)“異或”運算可用符號“”表示。運算規(guī)則如下:

可以看出,兩變量只要不同,“異或”運算的結(jié)果就為“1”。第22頁/共103頁24例2.7A=11110101B,B=00110000B,求解第23頁/共103頁252.2帶符號數(shù)的表示及運算

2.2.1

機(jī)器數(shù)與真值日常生活中遇到的數(shù),除了上述無符號數(shù)外,還有帶符號數(shù)。對于帶符號的二進(jìn)制數(shù),其正負(fù)符號如何表示呢?在計算機(jī)中,為了區(qū)別正數(shù)和負(fù)數(shù),通常用二進(jìn)制數(shù)的最高位表示數(shù)的符號。對于一個字節(jié)型二進(jìn)制數(shù)來說,D7位為符號位,D6D0位為數(shù)值位。在符號位中,規(guī)定用“0”表示正,“1”表示負(fù),而數(shù)值位表示該數(shù)的數(shù)值大小。把一個數(shù)及其符號位在機(jī)器中的一組二進(jìn)制數(shù)表示形式,稱為“機(jī)器數(shù)”。機(jī)器數(shù)所表示的值稱為該機(jī)器數(shù)的“真值”。第24頁/共103頁262.2.2

機(jī)器數(shù)的表示方法

1.原碼設(shè)數(shù)x的原碼記作[x]原,如機(jī)器字長為n,則原碼定義如下:

在原碼表示法中,最高位為符號位(正數(shù)為0,負(fù)數(shù)為1),其余數(shù)字位表示數(shù)的絕對值。第25頁/共103頁27

例如,當(dāng)機(jī)器字長n=8時,

[+0]原=00000000B [-0]原=27+0(按定義計算,下同)=10000000B[+8]原=00001000B [-8]原=27+8=10001000B[+127]原=01111111B [-127]原=27+127=11111111B

當(dāng)機(jī)器字長n=16時,

[+0]原=0000000000000000B [-0]原=215+0=1000000000000000B[+8]原=0000000000001000B [-8]原=215+8=1000000000001000B

[+32767]原=0111111111111111B [-32767]原=215+32767=1111111111111111B

第26頁/共103頁28

可以看出,原碼表示數(shù)的范圍是。8位二進(jìn)制原碼表示數(shù)的范圍為-127+127,16位二進(jìn)制原碼表示數(shù)的范圍為-32767+32767;“0”的原碼有兩種表示法:00000000表示+0,10000000表示-0。第27頁/共103頁29

原碼表示法簡單直觀,且與真值的轉(zhuǎn)換很方便,但不便于在計算機(jī)中進(jìn)行加減運算。如進(jìn)行兩數(shù)相加,必須先判斷兩個數(shù)的符號是否相同。如果相同,則進(jìn)行加法運算;如果不同,則進(jìn)行減法運算。如進(jìn)行兩數(shù)相減,必須比較兩數(shù)的絕對值大小,再由大數(shù)減小數(shù),結(jié)果的符號要和絕對值大的數(shù)的符號一致。按上述運算方法設(shè)計的算術(shù)運算電路很復(fù)雜。因此,計算機(jī)中通常使用補碼進(jìn)行加減運算,這樣就引入了反碼表示法和補碼表示法。第28頁/共103頁302.

反碼設(shè)數(shù)x的反碼記作[x]反,如機(jī)器字長為n,則反碼定義如下:

正數(shù)的反碼與其原碼相同。例如,當(dāng)機(jī)器字長n=8時:

[+0]反=[+0]原=00000000B [+127]反=[+127]原=01111111B當(dāng)機(jī)器字長n=16時:

[+8]反=[+8]原=0000000000001000B[+127]反=[+127]原=0000000001111111B

第29頁/共103頁31

負(fù)數(shù)的反碼是在原碼基礎(chǔ)上,符號位不變(仍為1),數(shù)值位按位取反。例如,當(dāng)機(jī)器字長n=8時:

[-0]反=(28-1)-0=11111111B [-127]反=(28-1)-127=10000000B

反碼表示數(shù)的范圍是。8位二進(jìn)制反碼表示數(shù)的范圍為-127+127,16位二進(jìn)制反碼表示數(shù)的范圍為-32767+32767;“0”的反碼有兩種表示法:00000000表示+0,11111111表示-0。第30頁/共103頁323.

補碼設(shè)數(shù)x的補碼記作[x]補,如機(jī)器字長為n,則補碼定義如下:正數(shù)的補碼與其原碼、反碼相同。例如,當(dāng)機(jī)器字長n=8時:

[+8]補=[+8]反=[+8]原=00001000B [+127]補=[+127]反=[+127]原=01111111B當(dāng)機(jī)器字長n=16時:

[+8]補=[+8]反=[+8]原=0000000000001000B [+127]補=[+127]反=[+127]原=0000000001111111B第31頁/共103頁33

負(fù)數(shù)的補碼是在原碼基礎(chǔ)上,符號位不變(仍為1),數(shù)值位按位取反,末位加1;或在反碼基礎(chǔ)上末位加1。例如,當(dāng)機(jī)器字長n=8時:[-8]原=10001000B [-127]原=11111111B[-8]反=11110111B [-127]反=10000000B[-8]補=28-8=11111000B [-127]補=28-127=10000001B可以看出,補碼表示數(shù)的范圍是。8位二進(jìn)制補碼表示數(shù)的范圍為-128+127,16位二進(jìn)制反碼表示數(shù)的范圍為-32768+32767。8位二進(jìn)制數(shù)的原碼、反碼和補碼如表2.1所示。第32頁/共103頁34表2.18位二進(jìn)制數(shù)的原碼、反碼和補碼表00000000

二進(jìn)制數(shù)

無符號十進(jìn)制數(shù)帶符號數(shù)原碼反碼補碼0000000100000010

01111110011111111000000010000001

111111011111111011111111012

126127128129

253254255+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第33頁/共103頁352.2.3

真值與機(jī)器數(shù)之間的轉(zhuǎn)換

一.原碼轉(zhuǎn)換為真值根據(jù)原碼定義,將原碼數(shù)值位各位按權(quán)展開求和,由符號位決定數(shù)的正負(fù)即可由原碼求出真值。例2.8

已知[x]原=00011111B,[y]原=10011101B,求x和yx=+(026+025+124+123+122+121+120)=31y=-(026+025+124+123+122+021+120)=-29第34頁/共103頁36

2.

反碼轉(zhuǎn)換為真值要求反碼的真值,只要先求出反碼對應(yīng)的原碼,再按上述原碼轉(zhuǎn)換為真值的方法即可求出其真值。正數(shù)的原碼是反碼本身。負(fù)數(shù)的原碼可在反碼基礎(chǔ)上,符號位仍為1不變,數(shù)值位按位取反。例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第35頁/共103頁373.補碼轉(zhuǎn)換為真值同理,要求補碼的真值,也要先求出補碼對應(yīng)的原碼。正數(shù)的原碼與補碼相同。

負(fù)數(shù)的原碼可在補碼基礎(chǔ)上再次求補,即:第36頁/共103頁38例2.10

已知[x]補=00001111B,[y]補=11100101B,求x和y解

[x]原=[x]補=00001111B,

x=+(026+025+024+123+122+121+120)=15[y]原=[[y]補]補=10011011B,

y=-(026+025+124+123+022+121+120)=-27第37頁/共103頁392.2.4

補碼的加減運算

1.補碼加法在計算機(jī)中,凡是帶符號數(shù)一律用補碼表示,運算結(jié)果自然也是補碼。其運算特點是:符號位和數(shù)值位一起參加運算,并且自動獲得結(jié)果(包括符號位與數(shù)值位)。補碼加法的運算規(guī)則為:即:兩數(shù)補碼的和等于兩數(shù)和的補碼。(2.2.5)第38頁/共103頁40

例2.11

已知

[+51]補=00110011B,[+66]補=01000010B,

[-51]補=11001101B,

[-66]補=10111110B

[+66]補+[+51]補=?[+66]補+[-51]補=?[-66]補+[-51]補=?解:(1)[+66]補+[+51]補

二進(jìn)制(補碼)加法十進(jìn)制加法

01000010[+66]補

+66+)00110011[+51]補

+)+51?01110101[+117]補

+117

第39頁/共103頁41由于:[+66]補+[+51]補=[(+66)+(+55)]補=01110101B

結(jié)果為正,因此:[(+66)+(+55)]原=[(+66)+(+55)]補=01110101B

其真值為+117,計算結(jié)果正確。(2)[+66]補+[-51]補

二進(jìn)制(補碼)加法十進(jìn)制加法

01000010[+66]補

+66+)11001101[?51]補

+)?5100001111[+15]補

+151自動丟失第40頁/共103頁42由于:[+66]補+[?51]補=[(+66)+(?55)]補=0000111B

結(jié)果為正,因此:[(+66)+(?55)]原=[(+66)+(?55)]補=00001111

其真值為+15,計算結(jié)果正確。(3)[-66]補+[-51]補

二進(jìn)制(補碼)加法十進(jìn)制加法

10111110[-66]補

-66+)11001101[?51]補

+)?5110001011[-117]補

-1171自動丟失第41頁/共103頁43由于[?66]補+[?51]補=10001011B=[(?66)+(?55)]補結(jié)果為負(fù),因此

[(?66)+(?55)]原=[[(?66)+(?55)]補]補=11110101B其真值為?117,計算結(jié)果正確??梢钥闯?,不論被加數(shù)、加數(shù)是正數(shù)還是負(fù)數(shù),只要直接用它們的補碼直接相加,當(dāng)結(jié)果不超出補碼所表示的范圍時,計算結(jié)果便是正確的補碼形式。但當(dāng)計算結(jié)果超出補碼表示范圍時,結(jié)果就不正確了,這種情況稱為溢出。第42頁/共103頁442.補碼減法補碼減法的運算規(guī)則為:(2.2.6)第43頁/共103頁45

例2.12

已知

[+51]補=00110011B,[+66]補=01000010B [?51]補=11001101B,[?66]補=10111110B求

[+66]補?[+51]補=?[?66]補?

[?51]補=?解

[+66]補?[+51]補=[+66]補+[?51]補

[?66]補?[?51]補=[?66]補+[+51]補

第44頁/共103頁46

二進(jìn)制(補碼)加法十進(jìn)制加法

01000010[+66]補

+66+)11001101[?51]補

-)+5100001111[+15]補

+151自動丟失

二進(jìn)制(補碼)加法十進(jìn)制加法

10111110[-66]補

-66+)00110011[+51]補

-)-5111110001[-15]補

-15第45頁/共103頁47

可以看出,無論被減數(shù)、減數(shù)是正數(shù)還是負(fù)數(shù),上述補碼減法的規(guī)則都是正確的。同樣,由最高位向更高位的進(jìn)位會自動丟失而不影響運算結(jié)果的正確性。計算機(jī)中帶符號數(shù)用補碼表示時有如下優(yōu)點:①可以將減法運算變?yōu)榧臃ㄟ\算,因此可使用同一個運算器實現(xiàn)加法和減法運算,簡化了電路。第46頁/共103頁48②無符號數(shù)和帶符號數(shù)的加法運算可以用同一個加法器實現(xiàn),結(jié)果都是正確的。例如:

無符號數(shù)帶符號數(shù)

11100001 225 [?31]補+)00001101?+) 13 +)[+13]補

11101110 238[?18]補

若兩操作數(shù)為無符號數(shù)時,計算結(jié)果為無符號數(shù)11101110B,其真值為238,結(jié)果正確;若兩操作數(shù)為補碼形式,計算結(jié)果也為補碼形式,11101110B為–18的補碼,結(jié)果也是正確的。第47頁/共103頁492.2.5溢出及其判斷方法

1.進(jìn)位與溢出所謂進(jìn)位,是指運算結(jié)果的最高位向更高位的進(jìn)位,用來判斷無符號數(shù)運算結(jié)果是否超出了計算機(jī)所能表示的最大無符號數(shù)的范圍。

溢出是指帶符號數(shù)的補碼運算溢出,用來判斷帶符號數(shù)補碼運算結(jié)果是否超出了補碼所能表示的范圍。例如,字長為n位的帶符號數(shù),它能表示的補碼范圍為?2n?1+2n?1?1,如果運算結(jié)果超出此范圍,就叫補碼溢出,簡稱溢出。第48頁/共103頁502.溢出的判斷方法判斷溢出的方法很多,常見的有:①通過參加運算的兩個數(shù)的符號及運算結(jié)果的符號進(jìn)行判斷。②單符號位法。該方法通過符號位和數(shù)值部分最高位的進(jìn)位狀態(tài)來判斷結(jié)果是否溢出。③雙符號位法,又稱為變形補碼法。它是通過運算結(jié)果的兩個符號位的狀態(tài)來判斷結(jié)果是否溢出。上述三種方法中,第①種方法僅適用于手工運算時對結(jié)果是否溢出的判斷,第②和③兩種方法在計算機(jī)中都有使用。本節(jié)僅通過具體例子對第②種方法做簡要介紹。第49頁/共103頁51

若符號位進(jìn)位狀態(tài)用CF來表示,當(dāng)符號位向前有進(jìn)位時,CF=1,否則,CF=0;數(shù)值部分最高位的進(jìn)位狀態(tài)用DF來表示,當(dāng)該位向前有進(jìn)位時,DF=1,否則,DF=0。單符號位法就是通過該兩位進(jìn)位狀態(tài)的異或結(jié)果來判斷是否溢出的。

(2.2.7)

若OF=1,說明結(jié)果溢出;若OF=0,則結(jié)果未溢出。也就是說,當(dāng)符號位和數(shù)值部分最高位同時有進(jìn)位或同時沒有進(jìn)位時,結(jié)果沒有溢出,否則,結(jié)果溢出。第50頁/共103頁52

例2.13

設(shè)有兩個操作數(shù)x=01000100B,y=01001000B,將這兩個操作數(shù)送運算器做加法運算,試問:①若為無符號數(shù),計算結(jié)果是否正確?②若為帶符號補碼數(shù),計算結(jié)果是否溢出?解

無符號數(shù)帶符號數(shù)

0100010068[+68]補+)01001000+)72+)[+72]補

10001100140[+140]補DF=1CF=0第51頁/共103頁53①若為無符號數(shù),由于CF=0,說明結(jié)果未超出8位無符號數(shù)所能表達(dá)的數(shù)值范圍(0255),計算結(jié)果10001100B為無符號數(shù),其真值為140,計算結(jié)果正確。②若為帶符號數(shù)補碼,由于CF=1,結(jié)果溢出;這里也可通過參加運算的兩個數(shù)的符號及運算結(jié)果的符號進(jìn)行判斷,由于兩操作數(shù)均為正數(shù),而結(jié)果卻為負(fù)數(shù),因而結(jié)果溢出;+68和+72兩數(shù)補碼之和應(yīng)為+140的補碼,而8位帶符號數(shù)補碼所能表達(dá)的數(shù)值范圍為?128+127,結(jié)果超出該范圍,因此結(jié)果是錯誤的。第52頁/共103頁54

例2.14

設(shè)有兩個操作數(shù)x=11101110B,y=11001000B,將這兩個操作數(shù)送運算器做加法運算,試問:①若為無符號數(shù),計算結(jié)果是否正確?②若為帶符號補碼數(shù),計算結(jié)果是否溢出?解

無符號數(shù)帶符號數(shù)

11101110238[-18]補+)11001000+)200+)[-56]補

10110110438[-74]補DF=1CF=01自動丟失第53頁/共103頁55①若為無符號數(shù),由于CF=1,說明結(jié)果超出8位無符號數(shù)所能表達(dá)的數(shù)值范圍(0255)。兩操作數(shù)11101110B和11001000B對應(yīng)的無符號數(shù)分別為238和200,兩數(shù)之和應(yīng)為438>255,因此,計算結(jié)果是錯誤的。②若為帶符號數(shù)補碼,由于CF=0,結(jié)果未溢出。兩操作數(shù)11101110B和11001000B分別為?18和?56的補碼,其結(jié)果應(yīng)為?74的補碼形式,而計算結(jié)果10110110B正是?74的補碼,因此結(jié)果正確。第54頁/共103頁562.3信息的編碼

2.3.1二進(jìn)制編碼的十進(jìn)制數(shù)編碼(BCD編碼)

雖然二進(jìn)制數(shù)對計算機(jī)來說是最佳的數(shù)制,但是人們卻不習(xí)慣使用它。為了解決這一矛盾,人們提出了一個比較適合于十進(jìn)制系統(tǒng)的二進(jìn)制編碼的特殊形式,即將1位十進(jìn)制的09這10個數(shù)字分別用4位二進(jìn)制碼的組合來表示,在此基礎(chǔ)上可按位對任意十進(jìn)制數(shù)進(jìn)行編碼。這就是二進(jìn)制編碼的十進(jìn)制數(shù),簡稱BCD碼(Binary-CodedDecimal)。第55頁/共103頁574位二進(jìn)制數(shù)碼有16種組合(00001111),原則上可任選其中的10個來分別代表十進(jìn)制中09這10個數(shù)字。但為了便于記憶,最常用的是8421BCD碼,這種編碼從00001111這16種組合中選擇前10個即00001001來分別代表十進(jìn)制數(shù)碼09,8、4、2、1分別是這種編碼從高位到低位每位的權(quán)值。BCD碼有兩種形式,即壓縮型BCD碼和非壓縮型BCD碼。第56頁/共103頁581.壓縮型BCD碼壓縮型BCD碼用一個字節(jié)表示兩位十進(jìn)制數(shù)。例如,10000110B表示十進(jìn)制數(shù)86。

2.非壓縮型BCD碼非壓縮型BCD碼用一個字節(jié)表示一位十進(jìn)制數(shù)。高4位總是0000,低4位用00001001中的一種組合來表示09中的某一個十進(jìn)制數(shù)。第57頁/共103頁59表2.28421BCD碼部分編碼表十進(jìn)制數(shù)壓縮型BCD碼非壓縮型BCD碼12391011192021000000010000001000000011000010010001000000010001000110010010000000100001000000010000001000000011

0000100100000001000000000000000100000001

000000010000100100000010000000000000001000000001第58頁/共103頁60

需要說明的是,雖然BCD碼可以簡化人機(jī)聯(lián)系,但它比純二進(jìn)制編碼效率低,對同一個給定的十進(jìn)制數(shù),用BCD碼表示時需要的位數(shù)比用純二進(jìn)制碼多,而且用BCD碼進(jìn)行運算所花的時間也要更多,計算過程更復(fù)雜,因為BCD碼是將每個十進(jìn)制數(shù)用一組4位二進(jìn)制數(shù)來表示,若將這種BCD碼送計算機(jī)進(jìn)行運算,由于計算機(jī)總是將數(shù)當(dāng)作二進(jìn)制數(shù)來運算,所以結(jié)果可能出錯,因此需要對計算結(jié)果進(jìn)行必要的修正,才能使結(jié)果為正確的BCD碼形式。詳見本小節(jié)例2.17。第59頁/共103頁61例2.15

十進(jìn)制數(shù)與BCD數(shù)相互轉(zhuǎn)換。①將十進(jìn)制數(shù)69.81轉(zhuǎn)換為壓縮型BCD數(shù):

69.81=(01101001.10000001)BCD②將BCD數(shù)10001001.01101001轉(zhuǎn)換為十進(jìn)制數(shù):

(10001001.01101001)BCD=89.69第60頁/共103頁62

例2.16

設(shè)有變量x等于10010110B,當(dāng)該變量分別為無符號數(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+123+022+121+020=?106BCD碼: [x]BCD=10010110B

x=96第61頁/共103頁63

例2.17(BCD碼運算時的修正問題)用BCD碼求38+49。解0011100038的BCD碼+)0100100149的BCD碼

1000000181的BCD碼

計算結(jié)果10000001是81的BCD數(shù),而正確結(jié)果應(yīng)為87的BCD數(shù)10000111,因此結(jié)果是錯誤的。其原因是,十進(jìn)制數(shù)相加應(yīng)該是“逢十進(jìn)一”,而計算機(jī)按二進(jìn)制數(shù)運算,每4位為一組,低4位向高4位進(jìn)位與十六進(jìn)制數(shù)低位向高位進(jìn)位的情況相當(dāng),是“逢十六進(jìn)一”,所以當(dāng)相加結(jié)果超過9時將比正確結(jié)果少6,因此結(jié)果出錯。解決辦法是對二進(jìn)制加法運算結(jié)果采用“加6修正”,從而將二進(jìn)制加法運算的結(jié)果修正為BCD碼加法運算結(jié)果。BCD數(shù)相加時,對二進(jìn)制加法運算結(jié)果修正的規(guī)則如下:第62頁/共103頁64①如果兩個對應(yīng)位BCD數(shù)相加的結(jié)果向高位無進(jìn)位,且結(jié)果小于或等于9,則該位不需要修正;若得到的結(jié)果大于9而小于16,則該位需要加6修正。②如果兩個對應(yīng)位BCD數(shù)相加的結(jié)果向高位有進(jìn)位(結(jié)果大于或等于16),則該位需要進(jìn)行加6修正。因此,兩個BCD數(shù)進(jìn)行運算時,首先按二進(jìn)制數(shù)進(jìn)行運算,然后必須用相應(yīng)的調(diào)整指令進(jìn)行調(diào)整,從而得到正確的BCD碼結(jié)果。有關(guān)BCD運算結(jié)果的調(diào)整指令將在第4章?“80x86指令系統(tǒng)”中介紹。第63頁/共103頁652.3.2ASCII字符編碼所謂字符,是指數(shù)字、字母以及其他一些符號的總稱。現(xiàn)代計算機(jī)不僅用于處理數(shù)值領(lǐng)域的問題,而且要處理大量的非數(shù)值領(lǐng)域的問題。這樣一來,必然需要計算機(jī)能對數(shù)字、字母、文字以及其他一些符號進(jìn)行識別和處理,而計算機(jī)只能處理二進(jìn)制數(shù),因此,通過輸入/輸出設(shè)備進(jìn)行人機(jī)交換信息時使用的各種字符也必須按某種規(guī)則,用二進(jìn)制數(shù)碼0和1來編碼,計算機(jī)才能進(jìn)行識別與處理。第64頁/共103頁66

目前,國際上使用的字符編碼系統(tǒng)有許多種。在微機(jī)、通信設(shè)備和儀器儀表中廣泛使用的是ASCII碼(AmericanStandardCodeforInformationInterchange)——美國標(biāo)準(zhǔn)信息交換碼。ASCII碼用一個字節(jié)來表示一個字符,采用7位二進(jìn)制代碼來對字符進(jìn)行編碼,最高位一般用做校驗位。7位ASCII碼能表示27=128種不同的字符,其中包括數(shù)碼(09),英文大、小寫字母,標(biāo)點符號及控制字符等,見表2.3。該表的使用方法讀者應(yīng)熟練掌握。如數(shù)字“1”的ASCII碼值為31H,字母“A”的ASCII碼值為41H,符號“?”的ASCII碼值為3FH等。第65頁/共103頁67表2.3美國標(biāo)準(zhǔn)信息交換碼ASCII(7位代碼)第66頁/共103頁682.4數(shù)的定點與浮點表示法2.4.1定點表示所謂定點表示法,是指小數(shù)點在數(shù)中的位置是固定的。原理上講,小數(shù)點的位置固定在哪一位都是可以的,但通常將數(shù)據(jù)表示成純小數(shù)或純整數(shù)形式,如圖2.1所示。圖2.1定點數(shù)的兩種表示方法(a)純小數(shù)形式;(b)純整數(shù)形式第67頁/共103頁69

設(shè)用一個n+1位字來表示一個數(shù)x,其中一位表示符號位(0表示正,1表示負(fù)),其他n位為數(shù)值位。對于純小數(shù)表示法,所能表示的數(shù)x(原碼表示,下同)的范圍為:?(1?2?n)≤x≤1?2?n

(2.4.1)

它能表示的數(shù)的最大絕對值為1?2?n,最小絕對值為2?n。對于純整數(shù)表示法,所能表示的數(shù)x的范圍為:?(2?n?1)≤x≤2?n

?1(2.4.2)它能表示的數(shù)的最大絕對值為2n?1,最小絕對值為1。第68頁/共103頁70定點表示法存在的問題:因為實際工作中很少遇到數(shù)據(jù)都是純小數(shù)或純整數(shù)的情況,所以定點表示法要求程序員做的一件重要工作是為要計算的問題選擇“比例因子”。所有原始數(shù)據(jù)都要用比例因子化成純小數(shù)或純整數(shù)形式,計算結(jié)果又要用比例因子恢復(fù)實際值。這一過程不僅占用資源,有時為了選擇適當(dāng)?shù)谋壤蜃右悦饨Y(jié)果溢出,需要反復(fù)多次調(diào)整比例因子,而且比例因子也需要占用一定的存儲空間。第69頁/共103頁712.4.2浮點表示所謂浮點表示法,就是小數(shù)點在數(shù)中的位置是浮動的。任意一個二進(jìn)制數(shù)x總可以寫成如下形式:

(2.4.3)其中,d稱為尾數(shù),是二進(jìn)制純小數(shù),指明數(shù)的全部有效數(shù)字,前面的符號稱為數(shù)符,表示數(shù)的符號,用尾數(shù)前的一位表示,該位為0,表明該浮點數(shù)為正,該位為1,表明該浮點數(shù)為負(fù);p稱為階碼,它前面的符號稱為階符,用階碼前一位表示,階碼為正時,用0表示,階碼為負(fù)時,用1表示。浮點數(shù)的編碼格式如圖所示。第70頁/共103頁72

可以看出,將尾數(shù)d的小數(shù)點向右(階碼p為正時)或向左(階碼p為負(fù)時)移動p位,即可得到該浮點數(shù)表示的數(shù)值x。階碼p指明小數(shù)點的位置,小數(shù)點隨著階碼的大小和正負(fù)而浮動,因此把這種數(shù)稱為浮點數(shù)。設(shè)階碼的位數(shù)為m位,尾數(shù)的位數(shù)為n位,則該浮點數(shù)表示的數(shù)值范圍為:(2.4.4)

在字長相同的情況下,浮點數(shù)能表示的數(shù)值范圍比定點數(shù)大得多,且精度高,但浮點運算規(guī)則復(fù)雜。第71頁/共103頁73例.1100.11的浮點數(shù)表示是0.110011×24

解:尾數(shù)為110011,數(shù)符為0;階碼為3bit(100),階符為0。小數(shù)點每左移1位,則階碼p加1;小數(shù)點每右移1位,則階碼p減1。例:設(shè)浮點數(shù)的階碼部分3bit,其中階碼為2bit,階符為1bit;尾數(shù)部分為5bit,其中尾符為1bit,尾數(shù)為4bit。若此數(shù)表示為-23×13D,其二進(jìn)制表示為211×(-1101),則在計算機(jī)中相應(yīng)的表示形式如下:

01111101第72頁/共103頁74小結(jié)一、進(jìn)位計數(shù)制及其表示方法(一)、進(jìn)位計數(shù)制及其要素:

進(jìn)位計數(shù)制:按進(jìn)位原則進(jìn)行計數(shù)的方法。例:十進(jìn)制數(shù)有: 0、1、2、3、4、5、6、7、8、9十種狀態(tài)。我們說:十進(jìn)制數(shù)基數(shù)10,變化范圍0~(10-1),

逢十進(jìn)一。看一個十進(jìn)制數(shù):

4094 每一位十種數(shù)碼的狀態(tài)(0~9)

千百十個 本位絕對值的大小=數(shù)×位權(quán)

103102101100如:千位=4×103=4000第73頁/共103頁75十進(jìn)制數(shù)有二個要素:

1.基數(shù):十 每一位0、1、2、3、4、5、6、7、8、10-1

(逢十進(jìn)一)。

2.位權(quán):10i

某一位數(shù)絕對值大小=數(shù)×位權(quán).

二個要素:適用于二、八、十六進(jìn)制。

二進(jìn)制數(shù):基數(shù)2位權(quán)2i

八進(jìn)制數(shù):基數(shù)8位權(quán)8i

十六進(jìn)制數(shù):基數(shù)16位權(quán)16i第74頁/共103頁76(二)、進(jìn)位計數(shù)制的表示方法:

1234.56=1103+2102+3101+4100+510-1+610-2推廣到一般形式(任意十進(jìn)制):

N=±[kn

10n+kn-1

10n-1+……+k0

100

+k-1

10-1+……+k-m

10-m] =±[ki

10i] (i=-m~n)任何某一位數(shù)大小=ki

10i對于任意進(jìn)制:N=±[kiRi] (i=-m~n) R—基數(shù),逢R進(jìn)一.Ri—位權(quán)第75頁/共103頁77例如:二進(jìn)制數(shù)B=10011101 B=127+124+123+122+120=(157)10

在計算機(jī)里進(jìn)行運算和處理均是按二進(jìn)制數(shù)處理的。而二進(jìn)制數(shù)寫起來麻煩;書寫時又以八進(jìn)制或十六進(jìn)制表示;日常生活中又常用十進(jìn)制,因此就有:二

十 八

十 二

八數(shù)制之間轉(zhuǎn)換問題 十六

十 二 十六第76頁/共103頁78二、 數(shù)制之間的轉(zhuǎn)換:(一)、十二整數(shù)十→二(除2取余法,降冪法)(1)除2取余法(217)10=kn

2n+kn-1

2n-1+……k1

21+k0

20 =2(kn

2n-1+kn-1

2n-2+……+k1

20)+k02(kn

2n-1+kn-1

2n-2+……+k1

20)是2的倍數(shù)k0

是余數(shù).第77頁/共103頁79(217)10÷2----得到余數(shù)k0

/2

整數(shù)商

余數(shù):按照相反的方向?qū)懴聛怼?/p>

/2/2/2/2/2/2/2/2217

1085427136310----商

10011011--余數(shù)(217) 10=(11011001)2書寫方向第78頁/共103頁80結(jié)論:整數(shù)除2取余,直到商為0為止, 讀數(shù)由后向前。適用于數(shù)值比較小的情況。(2)降冪法:計算(217)10=(11011001)2權(quán)值:

2102928272625242322212010245122561286432168421 217-27=89 a7=1

,9-23=1

a3=189-26=25 a6=1

,a2=0

a5=0

,a1=0 25-24=9 a4=1

,1-20=0a0=1第79頁/共103頁81小數(shù)十→二:乘2取整方法:對十進(jìn)制數(shù)逐次乘2, 小數(shù)點前邊系數(shù)為系數(shù)ki。

即乘2取整法,位數(shù)取決于要求精度。如:

(0.613)10

2=1.226k-1=1(0.226)10

2=0.452k-2=0(0.452)10

2=0.904k-3=0(0.904)10

2=1.808k-4=1(0.1001)2=(0.5625)10(0.808)10

2=1.616k-5=1(0.10011)2=(0.609375)10(0.616)10

2=1.232k-6=1(0.613)10=(0.1001)2k-7=0第80頁/共103頁823. 二→十同樣可以用公式進(jìn)行(0.1001)2=12-1+12-4=0.5+0.0625=(0.5625)10(0.10011)2=12-1+12-4+12-5+12-6

=(0.609375)10看一下常用的幾種數(shù)制寫法:八位二進(jìn)制數(shù)第81頁/共103頁83

十進(jìn)制二進(jìn)制八進(jìn)制十六進(jìn)制BCD 00 0 0 0 1 1 1 1 1 2 10 2 2 10 3 11 3 3 11 4 100 4 4 100 5 101 5 5 101 6 110 6 6 110 7 111 7 7 111 8 100010

8 1000 9 1001 11 9 1001

10 1010 12 A

10000 11 1011 13 B 10001 12 110014 C 10010 13 1101 15 D 10011 14 1110 16 E 10100 15 1111 17 F 10101 16 10000 20 10 10110 . . . 11 . . . . 12 . . . . . .(255)D 11111111B 377Q FFH (10,0101,0101)BCD第82頁/共103頁84(二)、 二八,二十六,二

BCD之間轉(zhuǎn)換

1、 二八二→

八:

以小數(shù)點為界向左向右三位一段,不夠補0,

三位二進(jìn)制數(shù)用一位八進(jìn)制數(shù)表示。例:(1,101,001.010,011,1)2

不夠補0

不夠補0

(001101001.010011

100)2=(151.234)8八→二:

一位八進(jìn)制數(shù)用三位二進(jìn)制數(shù)表示.

(151.234)8=(001101001.010011100)2第83頁/共103頁852、二十六:

二→十六: 以小數(shù)點為界向左向右四位一段,不夠補0,

四位二進(jìn)制數(shù)用一位十六進(jìn)制數(shù)表示。例:(1101001.0100111)2→(69.4E)16 不夠補0

不夠補0 (0110,1001.0100,1110)2=(69.4E)16

十六→二:一位十六進(jìn)制數(shù)用四位二進(jìn)制數(shù)表示。例:(69.4E)16

=

(0110,1001.0100,1110)2第84頁/共103頁863、 二

BCD BCD數(shù):常用8421碼,每一位十進(jìn)制數(shù)用四位二進(jìn)制編碼表示。

1111B 9D 1001BCD 10D00010000BCD

BCD碼與二進(jìn)制數(shù)之間轉(zhuǎn)換沒有直接關(guān)系, 必須先轉(zhuǎn)換成十進(jìn)制,然后轉(zhuǎn)換成二進(jìn)制。例:1111111B=255D=0010,0101,0101BCD 0010,0101,0101BCD=255D=11111111B第85頁/共103頁87三.字和各種字符的編碼(ASCⅡ編碼)字和各種字符按照特定規(guī)則用二進(jìn)制編碼在機(jī)器中表示。編碼有各種方式:目前規(guī)定在微型機(jī)中最普遍采用ASCⅡ碼(AmericanStandardCodeforInformationInterchange) 美國標(biāo)準(zhǔn)信息交換碼。參看P15ASCⅡ碼表。(一)二進(jìn)制數(shù)的運算

(二)帶符號數(shù)的表示第86頁/共103頁88ASCⅡ碼:

采用七位二進(jìn)制編碼,可以表示128個字符。

bit7作奇偶校驗位,在機(jī)器中表示時,常認(rèn)為“0”,用一個字節(jié)(8位)表示一個ASCⅡ字符。常用的ASCⅡ字符:

0—9 的ASCⅡ碼30H—39H A—Z的ASCⅡ碼41H—5AH a—z的ASCⅡ碼61H—7AH第87頁/共103頁89(一)二進(jìn)制數(shù)的運算(自學(xué)P3-P7)(二)帶符號數(shù)的表示

1.機(jī)器數(shù)與真值

2.原碼

3.反碼

4.補碼第88頁/共103頁90上面提到的是一種無符號數(shù),機(jī)器數(shù)中會有正有負(fù)。符號怎么表示呢?通常數(shù)的最高位為符號位,對于字長8位機(jī)器數(shù):

D7為符號位:0表示“+”,1表示“—”。符號數(shù)碼化了。

D6~D0為數(shù)字位。如:X=(01011011)2=+91X=(11011011)2=-91

連同符號位在一起作為一個數(shù)稱為機(jī)器數(shù), 機(jī)器數(shù)的數(shù)值稱為真值。如:N1=+1011011N2=-1011011為真值

01011011 11011011為機(jī)器數(shù)第89頁/共103頁91符號數(shù)碼化了,對數(shù)據(jù)進(jìn)行運算時,符號位應(yīng)如何處理? 把符號位和數(shù)值位一起編碼:原碼,反碼,補碼。

2.原碼: 正數(shù)符號位用“0”表示,負(fù)數(shù)符號用“1”表示, 這種表示法稱為原碼。

X=+105[X]原=01101001 X=-105[X]原=11101001

符號數(shù)值 原碼表示簡單,真值轉(zhuǎn)換方便,減法不方便。 引進(jìn)反碼,補碼。第90頁/共103頁923.反碼:

正數(shù)反碼表示與原碼相同,

(最高位“0”表示正,其余位為數(shù)值位。)

負(fù)數(shù)的反碼表示為負(fù)數(shù)原碼的符號位不變尾數(shù)按位取反。例: [+4]反

=0 0000100 [-4]反

=1 1111011 [+127]反=0 1111111 [-127]反=10000000 [+0]反

=00000000 [-0]反

=11111111第91頁/共103頁934.補碼:

正數(shù)的補碼表示與

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論