微型計(jì)算機(jī)課件:第1章 微型計(jì)算機(jī)的運(yùn)算基礎(chǔ)(補(bǔ))_第1頁(yè)
微型計(jì)算機(jī)課件:第1章 微型計(jì)算機(jī)的運(yùn)算基礎(chǔ)(補(bǔ))_第2頁(yè)
微型計(jì)算機(jī)課件:第1章 微型計(jì)算機(jī)的運(yùn)算基礎(chǔ)(補(bǔ))_第3頁(yè)
微型計(jì)算機(jī)課件:第1章 微型計(jì)算機(jī)的運(yùn)算基礎(chǔ)(補(bǔ))_第4頁(yè)
微型計(jì)算機(jī)課件:第1章 微型計(jì)算機(jī)的運(yùn)算基礎(chǔ)(補(bǔ))_第5頁(yè)
已閱讀5頁(yè),還剩84頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第3章運(yùn)算方法和運(yùn)算部件3.1數(shù)值的表示方法和轉(zhuǎn)換3.2帶符號(hào)的二進(jìn)制數(shù)據(jù)在計(jì)算機(jī)中的表示方 法及加減法運(yùn)算3.3二進(jìn)制乘法運(yùn)算3.4二進(jìn)制除法運(yùn)算3.5浮點(diǎn)的運(yùn)算方法3.6運(yùn)算部件3.7數(shù)據(jù)校驗(yàn)碼習(xí)題3.1數(shù)據(jù)的表示方法和轉(zhuǎn)換3.1.1數(shù)值型數(shù)據(jù)的表示和轉(zhuǎn)換1.數(shù)制任意一個(gè)十進(jìn)制數(shù)(N)10可表示為: (N)10=Dm·10m+Dm-1·10m-1+…+D1·101+D0·100 +D-1·10-1+D-2·10-2+…+D-k·10-k=Di·10i (3.1)

其中,(N)10的下標(biāo)10表示十進(jìn)制,該數(shù)共有m+k+1位,且m和k為正整數(shù);Di可以是0~9十個(gè)數(shù)碼中的任意一個(gè),根據(jù)Di在式中所處位置而賦以一個(gè)固定的單位值10i,稱(chēng)之為權(quán)(Weight)。式中的10稱(chēng)為基數(shù)或“底”。任意一個(gè)二進(jìn)制數(shù)可表示為: (N)2=Dm·2m+Dm-1·2m-1+…+D1·21+D0·20+D-1·2-1+ D-2·2-2+…+D-k·2-k=Di·2i (3.2) 式中,整數(shù)部分有m+1位,小數(shù)部分有k位,基數(shù)(或底)為2。 二進(jìn)制數(shù)(N)2按公式展開(kāi),可計(jì)算得該數(shù)的十進(jìn)制表示。例3.1 (1101.0101)2=(1·23+1·22+0·21+1·20+0·2-1+1·2-2+0·2-3+1·2-4)10=(8+4+0+1+0+0.25+0+0.0625)10=(13.3125)10為了方便經(jīng)常采用八進(jìn)制數(shù)或十六進(jìn)制數(shù)。任意一個(gè)八進(jìn)制數(shù)可表示為: (N)8=Di·8i (3.3)式3.3中Di可為0~7八個(gè)數(shù)碼中的任意一個(gè)。例3.2 (15.24)8=(1·81+5·80+2·8-1+4·8-2)10 =(8+5+0.25+0.0625)10

=(13.3125)10任意一個(gè)十六進(jìn)制數(shù)可表示為: (N)16=Di·16i (3.4) 式3.4中,Di可以是0~15共十六個(gè)數(shù)中的任一個(gè)。為書(shū)寫(xiě)和辨認(rèn)方便,通常用0~9和A~F分別表示十六進(jìn)制數(shù)0~9和10~15。例3.3 (0D.5)=(0·161+13·160+5·16-1)10 =(0+13+0.3125)10

=(13.3125)10二進(jìn)制數(shù)、八進(jìn)制數(shù)、十六進(jìn)制數(shù)和十進(jìn)制數(shù)之間的關(guān)系見(jiàn)表3.1。表3.1二、八、十六和十進(jìn)制數(shù)的對(duì)應(yīng)關(guān)系二進(jìn)制數(shù)八進(jìn)制數(shù)十六進(jìn)制數(shù)十進(jìn)制數(shù)00000000000101110010022200110333010004440101055501100666011107771000108810011199101012A10101113B11110014C12110115D13111016E14111117F152.不同數(shù)制間的數(shù)據(jù)轉(zhuǎn)換(1)二進(jìn)制數(shù)、八進(jìn)制數(shù)和十六進(jìn)制數(shù)之間的轉(zhuǎn)換由3位二進(jìn)制數(shù)組成1位八進(jìn)制數(shù),4位二進(jìn)制數(shù)組成1位十六進(jìn)制數(shù)。對(duì)于一個(gè)兼有整數(shù)和小數(shù)部分的數(shù),以小數(shù)點(diǎn)為界,對(duì)小數(shù)點(diǎn)前后的數(shù)分別分組進(jìn)行處理,不足的位數(shù)用0補(bǔ)足,對(duì)整數(shù)部分將0補(bǔ)在數(shù)的左側(cè),對(duì)小數(shù)部分將0補(bǔ)在數(shù)的右側(cè)。這樣數(shù)值不會(huì)發(fā)生差錯(cuò)。例3.4 (1

101.010

1)2=(001

101.010

100)2=(15.24)8 如從二進(jìn)制數(shù)轉(zhuǎn)換到十六進(jìn)制數(shù),則以4位為1組。例3.5 (1

1101.0101)2=(0001

1101.0101)2=(1D.5)16 八進(jìn)制數(shù)與十六進(jìn)制數(shù)之間的轉(zhuǎn)換,可將二進(jìn)制數(shù)作為中間媒介進(jìn)行轉(zhuǎn)換。(2)二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)利用上面講到的公式(N)2=Di·2i進(jìn)行計(jì)算。(3)十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù) 通常要對(duì)一個(gè)數(shù)的整數(shù)部分和小數(shù)部分分別進(jìn)行處理,各自得出結(jié)果后再合并。 對(duì)整數(shù)部分,一般采用除2取余數(shù)法,規(guī)則如下: 將十進(jìn)制數(shù)除以2,所得余數(shù)(0或1)即為對(duì)應(yīng)二進(jìn)制數(shù)最低位的值。然后對(duì)上次所得的商除以2,所得余數(shù)即為二進(jìn)制數(shù)次低位的值,如此進(jìn)行下去,直到商等于0為止,最后得出的余數(shù)是所求二進(jìn)制數(shù)最高位的值。例3.7將(105)10轉(zhuǎn)換成二進(jìn)制。 2105 余數(shù) 結(jié)果 252 1 最低位 226 0 213 0 … 26 1 23 0 21 1 0 1 最高位得出:(105)10=(1101001)2對(duì)小數(shù)部分,一般用乘2取整數(shù)法,其規(guī)則如下:將十進(jìn)制數(shù)乘以2,所得乘積的整數(shù)部分即為對(duì)應(yīng)二進(jìn)制小數(shù)最高位的值,然后對(duì)所余的小數(shù)部分乘以2,所得乘積的整數(shù)部分為次高位的值,如此進(jìn)行下去,直到乘積的小數(shù)部分為0,或結(jié)果已滿(mǎn)足所需精度要求為止。例3.8將(0.3125)10和(0.3128)10轉(zhuǎn)換成二進(jìn)制數(shù)(要求4位有效位)。 ①結(jié)果0.3125×2

最高位0.6250×2 …1.2500×2 0.5000×2

最低位1.0000

得出:(0.3125)10=(0.0101)2②結(jié)果0.3128×2

最高位06256×2 …12512×2 05024×2

最低位10048

得出:(0.3128)10=(0.0101)2 當(dāng)一個(gè)數(shù)既有整數(shù)部分又有小數(shù)部分時(shí),分別進(jìn)行轉(zhuǎn)換后再進(jìn)行拼接,如有數(shù)(105.3125)10,則根據(jù)前面的計(jì)算,得出:(105.3125)10=(1101001.0101)2。(4)十進(jìn)制數(shù)轉(zhuǎn)換成八進(jìn)制數(shù) 參照十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)的方法,將基數(shù)2改為8,即可實(shí)現(xiàn)轉(zhuǎn)換。例3.9將(13.3125)10轉(zhuǎn)換成八進(jìn)制數(shù),處理過(guò)程如下:整數(shù)部分轉(zhuǎn)換 813 余數(shù) 81 5 0 1 (13)10=(15)8得出:(13.3125)10=(15.24)8小數(shù)部分轉(zhuǎn)換 0.3125×8 2 .5000×8 4 .0000(0.3125)10=(0.24)8

3.數(shù)據(jù)符號(hào)的表示 數(shù)據(jù)的數(shù)值通常以正(+)負(fù)(-)號(hào)后跟絕對(duì)值來(lái)表示,稱(chēng)之為“真值”。在計(jì)算機(jī)中正負(fù)號(hào)也需要數(shù)字化,一般用0表示正號(hào),1表示負(fù)號(hào)。正號(hào)有時(shí)可省略。3.1.2十進(jìn)制數(shù)的編碼與運(yùn)算1.十進(jìn)制數(shù)位的編碼與運(yùn)算 在計(jì)算機(jī)中采用4位二進(jìn)制碼對(duì)每個(gè)十進(jìn)制數(shù)位進(jìn)行編碼。(1)有權(quán)碼 表示一位十進(jìn)制數(shù)的二進(jìn)制碼的每一位有確定的權(quán)。一般用8421碼,其4個(gè)二進(jìn)制碼的權(quán)從高到低分別為8、4、2和1。用0000,0001,…,1001分別表示0,1,…,9,每個(gè)數(shù)位內(nèi)部滿(mǎn)足二進(jìn)制規(guī)則,而數(shù)位之間滿(mǎn)足十進(jìn)制規(guī)則,故稱(chēng)這種編碼為“以二進(jìn)制編碼的十進(jìn)制(binarycodeddecimal,簡(jiǎn)稱(chēng)BCD)碼”。在計(jì)算機(jī)內(nèi)部實(shí)現(xiàn)BCD碼算術(shù)運(yùn)算,要對(duì)運(yùn)算結(jié)果進(jìn)行修正,對(duì)加法運(yùn)算的修正規(guī)則是:如果兩個(gè)一位BCD碼相加之和小于或等于(1001)2,即(9)10,不需要修正;如相加之和大于或等于(10)10,要進(jìn)行加6修正,并向高位進(jìn)位,進(jìn)位可以在首次相加(例3.10③)或修正時(shí)(例3.10②)產(chǎn)生。例3.10① 1+8=9 0001 +1000 1001不需要修正② 4+9=13 0100 +1001 1101 +0110修正

10011

進(jìn)位

另外幾種有權(quán)碼,如2421,5211,4311碼(見(jiàn)表3.2),也是用4位二進(jìn)制碼表示一個(gè)十進(jìn)制數(shù)位,但4位二進(jìn)制碼之間不符合二進(jìn)制規(guī)則。這幾種有權(quán)碼有一特點(diǎn),即任何兩個(gè)相加之和等于(9)10的二進(jìn)制碼互為反碼。例如,在2421碼中,0(0000)與9(1111)、1(0001)與8(1110)、…,互為反碼。表3.24位有權(quán)碼十進(jìn)制數(shù)8421碼2421碼5211碼4311碼00000000000000000100010001000100012001000100011001130011001101010100401000100011110005010110111000011160110110010101011701111101110011008100011101110111091001111111111111(2)無(wú)權(quán)碼表示一個(gè)十進(jìn)制數(shù)位的二進(jìn)制碼的每一位沒(méi)有確定的權(quán)。用得較多的是余3碼(Excess-3Code)和格雷碼(GrayCode),格雷碼又稱(chēng)“循環(huán)碼”。

余3碼是在8421碼基礎(chǔ)上,把每個(gè)編碼都加上0011而形成的(見(jiàn)表3.3),其運(yùn)算規(guī)則是:當(dāng)兩個(gè)余3碼相加不產(chǎn)生進(jìn)位時(shí),應(yīng)從結(jié)果中減去0011;產(chǎn)生進(jìn)位時(shí),應(yīng)將進(jìn)位信號(hào)送入高位,本位加0011。例3.11(28)10+(55)10=(83)10表3.34位無(wú)權(quán)碼十進(jìn)制數(shù)余3碼格雷碼(1)格雷碼(2)0001100000000101000001010020101001101103011000100010401110110101051000111010116100110100011710101000000181011110010019110001001000 0101 1011 (28)10 +)10001 1000 (55)10 1110 0011 低位向高位產(chǎn)生進(jìn)位, 高位不產(chǎn)生進(jìn)位。 -)0011+)0011 低位+3,高位-3。 1011 0110 格雷碼的編碼規(guī)則:任何兩個(gè)相鄰編碼只有一個(gè)二進(jìn)制位不同,而其余三個(gè)二進(jìn)制位相同。其優(yōu)點(diǎn)是從一個(gè)編碼變到下一個(gè)相鄰編碼時(shí),只有1位發(fā)生變化,用它構(gòu)成計(jì)數(shù)器時(shí)可得到更好的譯碼波形。格雷碼的編碼方案有多種,表3.3給出兩組常用的編碼值。2.數(shù)字串在計(jì)算機(jī)內(nèi)的表示與存儲(chǔ)主要有兩種形式:(1)字符形式。即一個(gè)字節(jié)存放一個(gè)十進(jìn)制數(shù)位或符號(hào)位,存放的是0~9十個(gè)數(shù)字和正負(fù)號(hào)的ASCII編碼值。(2)壓縮的十進(jìn)制數(shù)形式。用一個(gè)字節(jié)存放兩個(gè)十進(jìn)制數(shù)位,既節(jié)省了存儲(chǔ)空間,又便于完成十進(jìn)制數(shù)的算術(shù)運(yùn)算。其值用BCD碼或ASCII碼的低4位表示。符號(hào)位也占半個(gè)字節(jié)并放在最低數(shù)字位之后,其值可從4位二進(jìn)制碼中的6種冗余狀態(tài)中選用。3.2帶符號(hào)的二進(jìn)制數(shù)據(jù)在計(jì)算機(jī)中的表示方法及加減法運(yùn)算 在計(jì)算機(jī)中表示的帶符號(hào)的二進(jìn)制數(shù)稱(chēng)為“機(jī)器數(shù)”。機(jī)器數(shù)有三種表示方式:原碼、補(bǔ)碼和反碼。 為討論方便,先假設(shè)機(jī)器數(shù)為小數(shù),符號(hào)位放在最左面,小數(shù)點(diǎn)置于符號(hào)位與數(shù)值之間。數(shù)的真值用X表示。3.2.1原碼、補(bǔ)碼、反碼及其加減法運(yùn)算

1.原碼表示法機(jī)器數(shù)的最高位為符號(hào)位,0表示正數(shù),1表示負(fù)數(shù),數(shù)值跟隨其后,并以絕對(duì)值形式給出。這是與真值最接近的一種表示形式。原碼的定義: [X]原= X 0≤X<1 1-X=1+|X| -1<X≤0 (3.5)即[X]原=符號(hào)位+|X|。例3.12 X=+0.1011,[X]原=01011; X=-0.1011,[X]原=11011。 由于小數(shù)點(diǎn)位置已默認(rèn)在符號(hào)位之后,書(shū)寫(xiě)時(shí)將其省略了。根據(jù)定義,當(dāng)X=-0.1011時(shí), [X]原=1-(-0.1011)=1.1011。數(shù)值零的真值有+0和-0兩種表示形式,[X]原也有兩種表示形式: [+0]原=00000,[-0]原=10000。數(shù)的原碼與真值之間的關(guān)系比較簡(jiǎn)單,其算術(shù)運(yùn)算規(guī)則與大家已經(jīng)熟悉的十進(jìn)制運(yùn)算規(guī)則類(lèi)似,當(dāng)運(yùn)算結(jié)果不超出機(jī)器能表示的范圍時(shí),運(yùn)算結(jié)果仍以原碼表示。它的最大缺點(diǎn)是在機(jī)器中進(jìn)行加減法運(yùn)算時(shí)比較復(fù)雜。 例如,當(dāng)兩數(shù)相加時(shí),先要判別兩數(shù)的符號(hào),如果兩數(shù)是同號(hào),則相加;兩數(shù)是異號(hào),則相減。而進(jìn)行減法運(yùn)算又要先比較兩數(shù)絕對(duì)值的大小,再用大絕對(duì)值減去小絕對(duì)值,最后還要確定運(yùn)算結(jié)果的正負(fù)號(hào)。下面介紹的用補(bǔ)碼表示的數(shù)在進(jìn)行加減法運(yùn)算時(shí)可避免這些缺點(diǎn)。2.補(bǔ)碼表示法機(jī)器數(shù)的最高位為符號(hào)位,0表示正數(shù),1表示負(fù)數(shù),其定義如下:[X]補(bǔ)= X 0≤X<1 2+X=2-|X| -1≤X<0 (3.6)即[X]補(bǔ)=2·符號(hào)位+X (mod2)此處2為十進(jìn)制數(shù),即為二進(jìn)制的10。例3.13 X=+0.1011, 則[X]補(bǔ)=0.1011 X=-0.1011, 則[X]補(bǔ)=2+X =2+(-0.1011) =1.0101數(shù)值零的補(bǔ)碼表示形式是唯一的,即: [+0]補(bǔ)=[-0]補(bǔ)=0.0000這可根據(jù)補(bǔ)碼定義計(jì)算如下: 當(dāng)X=+0.0000時(shí),[X]補(bǔ)=0.0000。 當(dāng)X=-0.0000時(shí),[X]補(bǔ)=2+X =10.0000+0.0000 =10.0000=0.0000 mod2當(dāng)補(bǔ)碼加法運(yùn)算的結(jié)果不超出機(jī)器范圍時(shí),可得出以下重要結(jié)論:(1)用補(bǔ)碼表示的兩數(shù)進(jìn)行加法運(yùn)算,其結(jié)果仍為補(bǔ)碼。(2)[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)。(3)符號(hào)位與數(shù)值位一樣參與運(yùn)算。例3.14設(shè)X=0.1010,Y=0.0101,兩數(shù)均為正數(shù): [X+Y]補(bǔ)=[0.1010+0.0101]補(bǔ)

=[0.1111]補(bǔ)

=0.1111 [X]補(bǔ)+[Y]補(bǔ)

=0.1010+0.0101=0.1111

即[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)=0.1111例3.15設(shè)X=0.1010,Y=-0.0101,X為正,Y為負(fù): [X+Y]補(bǔ)=[0.1010+(-0.0101)]補(bǔ)

=0.0101 [X]補(bǔ)+[Y]補(bǔ)=0.1010+[-0.0101]補(bǔ)

=0.1010+(2-0.0101) =2+0.0101 =0.0101 mod2

即[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)=0.0101例3.16設(shè)X=-0.1010,Y=0.0101,X為負(fù),Y為正: [X+Y]補(bǔ)=[-0.1010+0.0101]補(bǔ)

=[-0.0101]補(bǔ)

=1.1011 [X]補(bǔ)+[Y]補(bǔ) =[-0.1010]補(bǔ)+[0.0101]補(bǔ) =1.0110+0.0101=1.1011

即[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)=1.1011例3.17設(shè)X=-0.1010,Y=-0.0101,X,Y均為負(fù)數(shù): [X+Y]補(bǔ)=[-0.1010+(-0.0101)]補(bǔ)

=[-0.1111]補(bǔ)

=1.0001 [X]補(bǔ)+[Y]補(bǔ)=1.0110+1.1011 =10+1.0001 =1.0001 mod2

即:[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)=1.0001在例3.14~例3.17中,包括了X、Y各為正負(fù)數(shù)的各種組合,證實(shí)了當(dāng)運(yùn)算結(jié)果不超出機(jī)器所能表示的范圍時(shí),[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)。例3.18設(shè)X=-0.0000,Y=-0.0000 [X]補(bǔ)+[Y]補(bǔ)=[X+Y]補(bǔ)

=(2+0.0000)+(2+0.0000) =4+0.0000 =0.0000mod2說(shuō)明兩個(gè)負(fù)零相加,最后得正零,再次說(shuō)明了補(bǔ)碼零在機(jī)器中的表示形式是唯一的。例3.19設(shè)X=-0.1011,Y=-0.0101,則有 [X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)

=1.0101+1.1011=11.0000=1.0000 mod2而X+Y的真值=-0.1011+(-0.0101)=-1.0000,為-1。由此說(shuō)明一個(gè)數(shù)的補(bǔ)碼值的范圍在-1和(1-2-n)之間(假設(shè)數(shù)值部分為n位)。對(duì)于減法運(yùn)算,因?yàn)椋踃-Y]補(bǔ)=[X+(-Y)]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ),所以計(jì)算時(shí),可以先求出-Y的補(bǔ)碼,然后再進(jìn)行加法運(yùn)算,這樣在用邏輯電路實(shí)現(xiàn)加減法運(yùn)算時(shí),可以只考慮用加法電路,而不必設(shè)置減法電路。圖3.1為實(shí)現(xiàn)加法運(yùn)算的邏輯示例。圖3.1實(shí)現(xiàn)加法運(yùn)算的邏輯示例控制信號(hào)3.反碼表示法機(jī)器碼的最高位為符號(hào),0表示正數(shù),1表示負(fù)數(shù)。反碼的定義: [X]反= X 0≤X<1 2-2-n+X -1<X≤0 (3.7)即:[X]反=(2-2-n)·符號(hào)位+Xmod(2-2-n),其中,n為小數(shù)點(diǎn)后的有效位數(shù)。例3.20 X=+0.1011(n=4),則[X]反=0.1011 X=-0.1011(n=4),則[X]反=2-2-4+(-0.1011)=1.0100即:當(dāng)X為正數(shù)時(shí),[X]反=[X]原;當(dāng)X為負(fù)數(shù)時(shí)保持[X]原符號(hào)位不變,而將數(shù)值部分取反。反碼運(yùn)算是以2-2-n為模,所以,當(dāng)最高位有進(jìn)位而丟掉進(jìn)位(即2)時(shí),要在最低位+1。例3.21X=0.1011,Y=-0.0100,則有: [X]反=0.1011,[Y]反=1.1011 [X+Y]反=[X]反+[Y]反=[0.1011+1.1011]反=[10.0110]其中,最高位1丟掉,并要在最低位加1。所以 得[X+Y]反=0.0111 mod(2-2-4)。例3.22X=0.1011,Y=-0.1100,則有: [X]反=0.1011,[Y]反=1.0011 [X+Y]反=[0.1011+1.0011]反=1.1110(其真值為-0.0001)反碼零有兩種表示形式: [+0]反=0.0000,[-0]反=1.1111反碼運(yùn)算在最高位有進(jìn)位時(shí),要在最低位+1,此時(shí)要多進(jìn)行一次加法運(yùn)算,增加了復(fù)雜性,又影響了速度,因此很少采用。正數(shù)的原碼、補(bǔ)碼和反碼的表示形式是相同的,而負(fù)數(shù)則各不相同。4.數(shù)據(jù)從補(bǔ)碼和反碼表示形式轉(zhuǎn)換成原碼仿照原碼轉(zhuǎn)換成補(bǔ)碼或反碼的過(guò)程再重復(fù)執(zhí)行一遍,即可還原成原碼形式。(1)將反碼表示的數(shù)據(jù)轉(zhuǎn)換成原碼。轉(zhuǎn)換方法:符號(hào)位保持不變,正數(shù)的數(shù)值部分不變,負(fù)數(shù)的數(shù)值部分取反。例3.23設(shè)[X]反=0.1010,則[X]原=0.1010,真值X=0.1010。例3.24設(shè)[X]反=1.1010,則[X]原=1.0101,真值X=-0.0101。(2)將補(bǔ)碼表示的數(shù)據(jù)轉(zhuǎn)換成原碼。例3.25設(shè)[X]補(bǔ)=0.1010,則[X]原=0.1010,真值X=0.1010。例3.26設(shè)[X]補(bǔ)=1.1010,則[X]原=1.0110,真值X=-0.0110。(3)原碼和補(bǔ)碼、反碼之間相互轉(zhuǎn)換的實(shí)現(xiàn)。在圖3.1中,給出適當(dāng)?shù)目刂泼?,即可?shí)現(xiàn)轉(zhuǎn)換。例3.27[X]原=1.1010,則[X]反=1.0101。[X]反最低位加1,即可得[X]補(bǔ)=1.0110。 在計(jì)算機(jī)中,當(dāng)用串行電路按位將原碼轉(zhuǎn)換成補(bǔ)碼形式時(shí)(或反之),經(jīng)常采取以下方法:自低位開(kāi)始轉(zhuǎn)換,從低位向高位,在遇到第1個(gè)“1”之前,保持各位的“0”不變,第1個(gè)“1”也不變,以后的各位按位取反,最后保持符號(hào)位不變,經(jīng)歷一遍后,即可得到補(bǔ)碼。

5.整數(shù)的表示形式設(shè)X=Xn…X2X1X0,其中Xn為符號(hào)位。(1)原碼 [X]原= X 0≤X<2n 2n-X=2n+|X| -2n<X≤0 (3.8)例1AX1=+1010101[X]原=01010101,X2=-1010101[X]原=110101015.整數(shù)的表示形式設(shè)X=Xn…X2X1X0,其中Xn為符號(hào)位。(2)反碼 [X]反= X 0≤X<2n (2n+1-1)+X -2n<X≤0 (3.10)例2AX1=+1010101[X]反=01010101X2=-1010101[X]反 =28-1+(

-1010101

) =10101010 =101010105.整數(shù)的表示形式設(shè)X=Xn…X2X1X0,其中Xn為符號(hào)位。(3)補(bǔ)碼 [X]補(bǔ)= X 0≤X<2n 2n+1+X=2n+1-|X| -2n≤X<0 (3.9)例2AX1=+1010101[X]補(bǔ)=01010101,X2=-1010101[X]補(bǔ)=28+(-1010101)=100000000-1010101=10101011或者,數(shù)值部分取反加1:[X]反=10101010,[X]反+1=10101010+1

=10101011 在計(jì)算機(jī)中,當(dāng)用串行電路按位將原碼轉(zhuǎn)換成補(bǔ)碼形式時(shí)(或反之),經(jīng)常采取以下方法:自低位開(kāi)始轉(zhuǎn)換,從低位向高位,在遇到第1個(gè)“1”之前,保持各位的“0”不變,第1個(gè)“1”也不變,以后的各位按位取反,最后保持符號(hào)位不變,經(jīng)歷一遍后,即可得到補(bǔ)碼。

3.2.2加減法運(yùn)算的溢出處理 當(dāng)運(yùn)算結(jié)果超出機(jī)器數(shù)所能表示的范圍時(shí),稱(chēng)為溢出。

一旦溢出,運(yùn)算結(jié)果就不正確了,因此必須將溢出的情況檢查出來(lái)。 今以4位二進(jìn)制補(bǔ)碼正整數(shù)加法運(yùn)算為例說(shuō)明如下:例3.28①9+5=14②(-9)+(-5)=-14③12+7=19(溢出) 01001 10111 0

1100 +00101+11011+)0

0111 01110110010 10011④(-12)+(-7)=-19(溢出)⑤14-1=13⑥-14+1=-13

1

0100 01110 10010

1

1001 +11111+)00001

1

01101 101101 10011在上例中,①、②、⑤和⑥得出正確結(jié)果,③和④為溢出。今以fA,fB表示兩操作數(shù)(A、B)的符號(hào)位,fS為結(jié)果的符號(hào)位。符號(hào)位fA、fB直接參與運(yùn)算,它所產(chǎn)生的進(jìn)位以Cf表示。在以2n+1為模的運(yùn)算中符號(hào)位有進(jìn)位,并不一定表示溢出,在例3.28中的②和⑤即是這種情況。假如我們用C來(lái)表示數(shù)值最高位產(chǎn)生的進(jìn)位,那么C=1也不一定表示溢出,例3.28中的②和⑤仍屬這種情況。究竟如何判斷溢出,實(shí)現(xiàn)時(shí)有多種方法可供選擇,采用其中一種方法即可,今將判別溢出的幾種方法介紹如下:當(dāng)符號(hào)相同的兩數(shù)相加時(shí),如果結(jié)果的符號(hào)與加數(shù)(或被加數(shù))不相同,則為溢出例3.28中③和④。即溢出條件=fAfBfS+fAfBfS。在計(jì)算機(jī)中判溢出的邏輯電路如圖3.2所示,圖3.2(a)和圖3.2(b)是兩種不同邏輯電路,但其結(jié)果是相同的。圖3.2判溢出的邏輯圖(之一)(2)當(dāng)任意符號(hào)兩數(shù)相加時(shí),如果C=Cf,運(yùn)算結(jié)果正確,其中C為數(shù)值最高位的進(jìn)位,Cf為符號(hào)位的進(jìn)位。如果C≠Cf,則為溢出,所以溢出條件=CCf。例3.28中的③和④即為這種情況。其邏輯電路見(jiàn)圖3.3。圖3.3判溢出的邏輯圖(之二)(3)采用雙符號(hào)位fS1fS2。正數(shù)的雙符號(hào)位為00,負(fù)數(shù)的雙符號(hào)位為11。符號(hào)位參與運(yùn)算,當(dāng)結(jié)果的兩個(gè)符號(hào)位fS1和fS2不相同時(shí),為溢出。所以溢出條件=fS1fS2,或者溢出條件=fS1fS2+fS1fS2。其邏輯電路如圖3.4所示。例3.29① 9+5=14 ②12+7=19

001001 001100 +000101 +000111

001110 010011 C=Cf=0不溢出,C=1,Cf=0溢出, 或fS1=fS2不溢出或fS1≠fS2溢出運(yùn)算結(jié)果的符號(hào)位為fS2(無(wú)論溢出與否)。圖3.4判溢出的邏輯圖(之三)采用多符號(hào)位的補(bǔ)碼又叫“變形補(bǔ)碼”。如果采用雙符號(hào)位,當(dāng)數(shù)為小數(shù)時(shí),模m=4;當(dāng)數(shù)為整數(shù)時(shí),模m=2n+2。其中n為數(shù)值部分的位數(shù)。一般運(yùn)算時(shí)用雙符號(hào)位,存儲(chǔ)時(shí)僅保留一個(gè)符號(hào)位。因?yàn)樵谡G闆r下,兩個(gè)符號(hào)位保持一致,而發(fā)生溢出情況時(shí),一般要產(chǎn)生出錯(cuò)信號(hào),由CPU執(zhí)行糾錯(cuò)程序進(jìn)行處理,情況嚴(yán)重時(shí)將停機(jī)。3.2.3定點(diǎn)數(shù)和浮點(diǎn)數(shù)

1.定點(diǎn)數(shù) 定點(diǎn)數(shù)是指小數(shù)點(diǎn)固定在某個(gè)位置上的數(shù)據(jù),一般有小數(shù)和整數(shù)兩種表示形式。定點(diǎn)小數(shù)是把小數(shù)點(diǎn)固定在數(shù)據(jù)數(shù)值部分的左邊,符號(hào)位的右邊;整數(shù)是把小數(shù)點(diǎn)固定在數(shù)據(jù)數(shù)值部分的右邊。我們?cè)谇懊嬗懻摰臄?shù)據(jù)都是定點(diǎn)數(shù)。2.浮點(diǎn)數(shù) 浮點(diǎn)數(shù)是指小數(shù)點(diǎn)位置可浮動(dòng)的數(shù)據(jù),通常以下式表示:N=M·RE

其中,N為浮點(diǎn)數(shù),M(mantissa)為尾數(shù),E(exponent)為階碼,R(radix)稱(chēng)為“階的基數(shù)(底)”,而且R為一常數(shù),一般為2、8或16。在一臺(tái)計(jì)算機(jī)中,所有數(shù)據(jù)的R都是相同的,于是不需要在每個(gè)數(shù)據(jù)中表示出來(lái)。因此,浮點(diǎn)數(shù)的機(jī)內(nèi)表示一般采用以下形式: MS E M 1位 n+1位 m位MS是尾數(shù)的符號(hào)位,設(shè)置在最高位上。E為階碼,有n+1位,一般為整數(shù),其中有一位符號(hào)位,設(shè)置在E的最高位上,用來(lái)表示正階或負(fù)階。M為尾數(shù),有m位,由MS和M組成一個(gè)定點(diǎn)小數(shù)。MS=0,表示正號(hào),MS=1,表示負(fù)號(hào)。 為了保證數(shù)據(jù)精度,尾數(shù)通常用規(guī)格化形式表示:當(dāng)R=2,且尾數(shù)值不為0時(shí),其絕對(duì)值應(yīng)大于或等于(0.5)10。用補(bǔ)數(shù)表示:M補(bǔ)=0.1XXXX…X,M>0(0.5=<M<1)或M補(bǔ)=1.0XXXX…X,M<0(-1=<M<-0.5)

特殊情況:(1)[-0.5]補(bǔ)=1.1000…0,與一般情況相悖,為便于硬件判斷,規(guī)定-0.5不是規(guī)格化的數(shù)(對(duì)補(bǔ)碼而言);(2)[-1]補(bǔ)=1.000…0,規(guī)定-1是規(guī)格化的數(shù)(對(duì)補(bǔ)碼而言);

對(duì)非規(guī)格化浮點(diǎn)數(shù),通過(guò)將尾數(shù)左移或右移,并修改階碼值使之滿(mǎn)足規(guī)格化要求。假設(shè)浮點(diǎn)數(shù)的尾數(shù)為0.0011,階碼為0100(設(shè)定R=2),規(guī)格化時(shí),將尾數(shù)左移2位,而成為0.1100,階碼減去(10)2,修改成0010,浮點(diǎn)數(shù)的值保持不變。

當(dāng)一個(gè)浮點(diǎn)數(shù)的尾數(shù)為0(不論階碼是何值),或階碼的值比能在機(jī)器中表示的最小值還小時(shí),計(jì)算機(jī)都把該浮點(diǎn)數(shù)看成零值,稱(chēng)為機(jī)器零。在多數(shù)通用機(jī)中,浮點(diǎn)數(shù)的尾數(shù)用補(bǔ)碼表示,階碼用補(bǔ)碼或移碼表示。移碼的定義如下(當(dāng)階碼為n+1位二進(jìn)制整數(shù)其中最高位為符號(hào)位時(shí)): [X]移=2n+X -2n≤X<2n (3.11) 將這一定義與整數(shù)補(bǔ)碼的定義比較,可找出補(bǔ)碼與移碼之間的關(guān)系。 [X]補(bǔ)= X 0≤X<2n 2n+1+X -2n≤X<0 當(dāng)0≤X<2n時(shí),[X]移=2n+X=2n+[X]補(bǔ) (3.12) 當(dāng)-2n≤X<0時(shí), [X]移=2n+X=(2n+1+X)-2n=[X]補(bǔ)-2n(3.13) 因此把[X]補(bǔ)的符號(hào)位取反,即得[X]移。例3.30X=+1011[X]

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論