版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章計(jì)算機(jī)中的數(shù)值運(yùn)算與運(yùn)算器
本章學(xué)習(xí)目標(biāo)
本章將介紹數(shù)據(jù)與文字在計(jì)算機(jī)中的表示方法,詳細(xì)講解數(shù)值數(shù)據(jù)
的原碼、補(bǔ)碼和反碼表示法以及它們之間的相互轉(zhuǎn)換,定點(diǎn)表示法、
浮點(diǎn)表示法、定點(diǎn)運(yùn)算法、浮點(diǎn)運(yùn)算方法和運(yùn)算器的組成。通過(guò)本章
的學(xué)習(xí),應(yīng)該重點(diǎn)掌握和理解以下內(nèi)容:
■了解數(shù)據(jù)、文字在計(jì)算機(jī)中的表示方法
-掌握原碼、補(bǔ)碼和反碼的表示方法,以及它們之間的相互轉(zhuǎn)換
■掌握定點(diǎn)表示法和浮點(diǎn)表示法
-掌握定點(diǎn)四則運(yùn)算和浮點(diǎn)四則運(yùn)算
第三章12011-12-31
3.1數(shù)值數(shù)據(jù)的表示
3.1.1無(wú)符號(hào)數(shù)和帶符號(hào)數(shù)
在計(jì)算機(jī)中,數(shù)據(jù)可分為無(wú)符號(hào)數(shù)和帶符號(hào)數(shù)。所謂無(wú)符號(hào)數(shù),是
指正整數(shù),機(jī)器字長(zhǎng)的全部數(shù)位均用來(lái)表示數(shù)值的大小,相當(dāng)于數(shù)的絕
對(duì)值。例如有兩個(gè)二進(jìn)制數(shù)N1和N2。
Nl=01011表示十進(jìn)制數(shù)11
N2=11011表示十進(jìn)制數(shù)27
對(duì)于字長(zhǎng)為n位的無(wú)符號(hào)數(shù)的表示范圍是0?2n-l。
一般計(jì)算機(jī)中都設(shè)有無(wú)符號(hào)數(shù)的運(yùn)算和處理指令,還有一些轉(zhuǎn)移指
令也是專(zhuān)門(mén)針對(duì)無(wú)符號(hào)數(shù)的。
然而,我們?cè)谌粘I钪袝?huì)大量用到帶符號(hào)的數(shù),即正數(shù)和負(fù)數(shù),
我們用“+”、“一”號(hào)加絕對(duì)值來(lái)表示數(shù)值的大小。用這種形式表示的
數(shù)值在計(jì)算機(jī)技術(shù)中稱(chēng)為“真值”。
第三章22011-12-31
但是,機(jī)器是無(wú)法識(shí)別符號(hào)“+”、“一”的,由于“+”、“一”恰
好是兩種截然不同的狀態(tài),如果用“0”表示“+”,用“I”表示“一”,
這樣符號(hào)就被數(shù)字化了,并且規(guī)定將它放在有符號(hào)數(shù)的前面,這樣就組
成了有符號(hào)數(shù)。這種在計(jì)算機(jī)中使用的、包括符號(hào)位在內(nèi)都被數(shù)字化了
的數(shù)稱(chēng)為“機(jī)器數(shù)”或“機(jī)器碼”。機(jī)器數(shù)有三種不同的表示形式:原
碼、補(bǔ)碼和反碼。
對(duì)于帶符號(hào)數(shù)而言,上面例子中的兩個(gè)機(jī)器數(shù)Nl、N2的含義發(fā)生了
變化。
Nl=01011表示十進(jìn)制數(shù)+n
N2=11011根據(jù)編碼的不同分別表示不同的值,如原碼時(shí)表示十進(jìn)
制數(shù)一11
第三章32011-12-31
3.1.2原碼表示法
原碼表示法是一種最簡(jiǎn)單的機(jī)器數(shù)表示法,用最高位表示符號(hào)位,
符號(hào)位為“o”表示該數(shù)為正數(shù),符號(hào)位為“1”表示該數(shù)為負(fù)數(shù),數(shù)值跟
隨其后,并以絕對(duì)值形式給出,這是與真值最接近的一種表示形式。
1.定點(diǎn)小數(shù)的原碼形式
設(shè)定點(diǎn)小數(shù)為±0了其…Xn,它的原碼形式為Xs%X2…Xn,其中Xs表
示符號(hào)位。原碼的定義為:
X0<X<1
[x]原
1-X=1+IXI-1<X<0
式中:X表不真值,[X]原表示原碼。
例如:X=0.0101,[X]原=X=0.0101
X=-0.0101,[X]原=1-X=1-(-0.0101)=1+0.0101=1.0101
第三章42011-12-31
2.定點(diǎn)整數(shù)的原碼形式
設(shè)定點(diǎn)整數(shù)為±%X2…X。,它的原碼形式為Xs,XJ2…X。,其中Xs
表示符號(hào)位。原碼的定義為:
X0<X<2n
2n-X=2n+|X|-2n<X<0
式中:X表示真值,[X]原表示原碼,n為整數(shù)的位數(shù)。
例如:X=0101,[X]原=X=00101
n4
x=—0101,[X]hi,=2-X=2-(-0101)=10000+0101=10101
在原碼表示法中,真值0有兩種不同的表示形式:
[+0]原=0,00...0
[―0]原=1,00...0
第三章52011-12-31
原碼表示法的優(yōu)點(diǎn)是簡(jiǎn)單易懂,機(jī)器數(shù)和真值之間的相互轉(zhuǎn)換非常
容易,用原碼實(shí)現(xiàn)乘、除運(yùn)算的規(guī)則很簡(jiǎn)單。但它的缺點(diǎn)是實(shí)現(xiàn)加、減
運(yùn)算的規(guī)則較復(fù)雜,這是因?yàn)?,?dāng)兩個(gè)數(shù)相加時(shí),如果是同號(hào)則數(shù)值相
加,如果是異號(hào),則兩數(shù)相減。而在進(jìn)行減法運(yùn)算時(shí),還要比較絕對(duì)值
的大小,然后用大數(shù)減小數(shù),最后還要給結(jié)果選擇恰當(dāng)?shù)姆?hào),為了解
決這些矛盾,人們引入了補(bǔ)碼表示法。
3.1.3補(bǔ)碼表示法
補(bǔ)碼表示法的設(shè)想是:使符號(hào)位參加運(yùn)算,從而簡(jiǎn)化了加、減法的
運(yùn)算規(guī)則;使減法運(yùn)算轉(zhuǎn)化為加法運(yùn)算,從而簡(jiǎn)化了機(jī)器的運(yùn)算器電路。
我們先以鐘表對(duì)時(shí)為例說(shuō)明補(bǔ)碼的概念。假設(shè)有一只表的時(shí)間停在8點(diǎn)
鐘,而現(xiàn)在的正確時(shí)間為3點(diǎn)整,要校準(zhǔn)時(shí)間,可以采用兩種方法:
(1)將時(shí)針順時(shí)針?lè)较蛘龘?小時(shí):8+7=15=12+3=3(mod12)
(2)將時(shí)針逆時(shí)針?lè)较虻箵?小時(shí):8-5=3o
第三章62011-12-31
因?yàn)殓姳淼囊恢転?2個(gè)小時(shí),12相當(dāng)于鐘表的進(jìn)位值,在數(shù)學(xué)中
稱(chēng)為“?!?,記作(mod12)o上例中7和一5對(duì)鐘表而言,它們的作用
相同,即加7和減5是等價(jià)的,我們稱(chēng)7是一5對(duì)模12的補(bǔ)碼??梢杂脭?shù)學(xué)
公式表示為:-5=+7(mod12)
從這個(gè)例子可以得到一個(gè)啟示,對(duì)于一個(gè)確定的模來(lái)說(shuō),某數(shù)減去
小于模的另一個(gè)數(shù),總可以用加上模與該數(shù)的絕對(duì)值之差來(lái)代替,即負(fù)
數(shù)用補(bǔ)碼表示,這樣可以將減法運(yùn)算轉(zhuǎn)化為加法運(yùn)算了。這樣,在計(jì)算
機(jī)中實(shí)現(xiàn)起來(lái)就比較方便了。
例如:9-6=9+(-6)=9+(12-6)=9+6=3(mod12)
65-25=65+(-25)=65+(100-25)=65+75=40(mod100)
在定點(diǎn)小數(shù)機(jī)器中的數(shù)最大不超過(guò)1,也就是負(fù)的小數(shù)對(duì)“產(chǎn)的補(bǔ)
碼是等價(jià)的。但實(shí)際上,負(fù)數(shù)的符號(hào)位還有一個(gè)“1”,要把它看成的數(shù)
的一部分,所以要對(duì)2求補(bǔ)碼,即以2為模。
第三章72011-12-31
1.定點(diǎn)小數(shù)的補(bǔ)碼形式
若定點(diǎn)小數(shù)為±0.X]X2…Xn,它的原碼形式為Xs.xp(2…Xn,其中表
示符號(hào)位,則補(bǔ)碼表示的定義為:
X0<X<1
(mod2)
2+X=2—|X|-1<X<0
式中[X]補(bǔ)為機(jī)器數(shù),X為真值。
例如,X=+0.0101,則[X]補(bǔ)=0.0101
x=-o.0101,則[X]補(bǔ)=10+X=10.0000-0.0101=1.1011
一般情況下,對(duì)于正數(shù)X=+0.X]X2…Xn,則有
補(bǔ)=
[X]0X^2,..xn
對(duì)于負(fù)數(shù)X=—0.X/2…Xn,則有
[X]補(bǔ)=10.00???0—O.XiX2???Xn(mod2)
注意,0的補(bǔ)碼表示只有一種形式,即[+0]補(bǔ)二[一0]補(bǔ)=0.0000。
第三章82011-12-31
2.定點(diǎn)整數(shù)的補(bǔ)碼形式
若定點(diǎn)整數(shù)為±XR2…Xn,它的補(bǔ)碼形式為Xs,乂止2…Xn,其中Xs表
示符號(hào)位,則補(bǔ)碼表示的定義為:
X0<X<2n
(mod2/z+1)
2n+1+X=2n+1-|^|-2n<X<0
式中:X表示真值,n為整數(shù)的位數(shù)。
例如,X=+0101,則[X]補(bǔ)=00101
X=-0101,則[X]補(bǔ)=2n+1+X=25+(—0101)=25-0101=100000-
0101=1,1011
采用補(bǔ)碼表示法進(jìn)行減法運(yùn)算就比原碼方便多了,因?yàn)椴徽撌钦龜?shù)
還是負(fù)數(shù),機(jī)器總是做加法,減法運(yùn)算可轉(zhuǎn)換成加法運(yùn)算。但根據(jù)補(bǔ)碼
的定義,求負(fù)數(shù)的補(bǔ)碼要從2減去|X|。為了用加法代替減法,結(jié)果還要
在求補(bǔ)碼時(shí)做一次減法,這顯然是不方便的。下面介紹的反碼表示法可
以解決負(fù)數(shù)的求補(bǔ)問(wèn)題。
第三章92011-12-31
3.1.4反碼表示法
所謂反碼,就是二進(jìn)制數(shù)的各位數(shù)碼由o變?yōu)?,由1變?yōu)?。也就是
說(shuō),若Xj=l,則反碼七二0;若X/0,則反碼Xj=l。數(shù)值上面的橫線表示反
碼的意思。反碼表示法與補(bǔ)碼表示法有相似之處,正數(shù)的反碼就等于真
值,負(fù)數(shù)的反碼是把其原碼除符號(hào)位以外的各位按位取反。
在計(jì)算機(jī)中用觸發(fā)器寄存數(shù)碼,若觸發(fā)器Q端輸出表示原碼,則其端
輸出就是反碼。由此可見(jiàn),反碼是容易得到的。
1.定點(diǎn)小數(shù)的反碼形式
對(duì)定點(diǎn)小數(shù),反碼表示的定義為:
0<x<1
-2-n)+X-1<X<0
其中n代表數(shù)的位數(shù)。
第三章102011-12-31
下面我們來(lái)證明第二個(gè)式子。SX=-0X1X2...Xn,則有[X]反O現(xiàn)在
將X的絕對(duì)值|X|和[X]反相加,則得
[X]反+|X|=1.11...1=10.00...0-0.00...1=2-2-n
所以
[X]反二(2-2-n)-|x|=(2-2一n)+X
一般情況下,對(duì)于正X=+0.X/2…Xn,則有
[X]反二0印2…Xn
對(duì)于負(fù)數(shù)X=-0力也…Xn,則有
1.X1X2…Xn
對(duì)于0,有[+0]反和[—0]反之分:
[+0]反=0.00...0
[―0]反=1.11...1
第三章112011-12-31
例如,X=+0.0101,則如]反=0.0101
X=-0.0101,則[X]反=(2-2-4)+X=1.1111+(一
0.0101)=1.1111-0.0101=1.1010
我們比較反碼與補(bǔ)碼的公式
[X]反=(2-2-n)+X
[X]補(bǔ)=2+X
可以得到
兇補(bǔ)=[X]反+2-n
由這個(gè)公式可知,求一個(gè)負(fù)數(shù)的補(bǔ)碼,其方法是符號(hào)位為1,其余各位0
變1,1變0,然后在最末位(2-n)上加1。
第三章122011-12-31
2.定點(diǎn)整數(shù)的反碼形式
對(duì)定點(diǎn)整數(shù),反碼表示的定義是
0<X<2n
-1)+X-2n<X<0
例如,X=+0101,則[X]反=00101
X=-0101,貝MX]反二(2n+1-l)+X=(25-1)+(-0101)
=(100000-1)-0101
=11111-0101
=11010
第三章132011-12-31
3.1.5三種碼制的比較與轉(zhuǎn)換
1.比較
三種碼制既有共同點(diǎn),又有各自不同的性質(zhì),主要區(qū)別有以下幾點(diǎn):
(1)對(duì)于正數(shù),它們都等于真值本身,而對(duì)于負(fù)數(shù)各自有不同的表示。
(2)最高位都表示符號(hào)位,補(bǔ)碼和反碼的符號(hào)位可作為數(shù)值的一部分看
待,和數(shù)值位一起參加運(yùn)算;但原碼的符號(hào)位不允許和數(shù)值位同等看待,
必須分開(kāi)處理。
(3)對(duì)于真值0,原碼和反碼各有兩種不同的表示形式,而補(bǔ)碼只有唯
一的一種表示形式。
(4)原碼、反碼表示的正、負(fù)數(shù)范圍相對(duì)零來(lái)說(shuō)是對(duì)稱(chēng)的;但補(bǔ)碼負(fù)數(shù)
表示范圍較正數(shù)表示范圍大,能多表示一個(gè)絕對(duì)值最大的數(shù),其值等于一
2-n(定點(diǎn)整數(shù))或一1(定點(diǎn)小數(shù))。
第三章142011-12-31
表3-1給出了以4位二進(jìn)制數(shù)為例,表示三種不同碼制時(shí)的十進(jìn)制真值。
表3-1三種不同碼制時(shí)的十進(jìn)制真值
二進(jìn)制數(shù)原碼補(bǔ)碼反碼
0000000
0001111
0010222
0011333
0100444
0101555
0110666
0111777
1000~0-8-7
1001一]一7
1010一6^5
1011-3~4
1100-4-3
1101______-3-2
1110-6-2--1
1111-7-1-0
第三章152011-12-31
2.轉(zhuǎn)換
三種不同碼制以及真值之間的轉(zhuǎn)換關(guān)系如圖3-1所示。
從圖3-1可看出,真值X與補(bǔ)碼或反碼之間的轉(zhuǎn)換通常是通過(guò)原碼實(shí)
現(xiàn)的,也可以直接完成真值與補(bǔ)碼或反碼之間的轉(zhuǎn)化。
若已知機(jī)器的字長(zhǎng),則機(jī)器數(shù)的位數(shù)應(yīng)補(bǔ)夠相應(yīng)的位數(shù),例如機(jī)器
字長(zhǎng)為8位則:
X=1011[X]原=00001011[X]補(bǔ)=00001011[X]反=00001011
X=-1011[X]B=10001011[x]補(bǔ)二iinoioi[X]^=11110100
X=0.1011[X].原g=0.1011000[X],k=0.1011000[X]^=0.1011000
x=-o.1011[X]原=1.10110000101000[X]反二1.0100111
第三章162011-12-31
[X]補(bǔ)
符號(hào)位不變
當(dāng)Xs=o時(shí)數(shù)值位不變
當(dāng)Xs=l日寸數(shù)值位變反+1
符號(hào)+/-變成0/1
[X]真值
數(shù)值位不變
符號(hào)位不變
當(dāng)Xs=0口寸數(shù)值位不變
當(dāng)Xs=l時(shí)數(shù)值位變反
[X]反
圖3-1三種不同碼制以及真值之間的轉(zhuǎn)換關(guān)系
第三章172011-12-31
3.2數(shù)的定點(diǎn)表示與浮點(diǎn)表示
在計(jì)算機(jī)中,小數(shù)點(diǎn)不用專(zhuān)門(mén)的器件表示,而是按約定的方式標(biāo)出。
根據(jù)小數(shù)點(diǎn)的位置是否固定,在計(jì)算機(jī)中有兩種數(shù)據(jù)格式:定點(diǎn)表示和
'4學(xué)點(diǎn)表示o
3.2.1定點(diǎn)表示法
定點(diǎn)數(shù)是指小數(shù)點(diǎn)固定在某個(gè)位置上的數(shù)值。通常有小數(shù)和整數(shù)兩
種表示形式。
1.定點(diǎn)小數(shù)
小數(shù)點(diǎn)的位置固定在最高有效數(shù)位之前、符號(hào)位之后時(shí),機(jī)器內(nèi)的
數(shù)稱(chēng)為純小數(shù)。記作Xs.X】X2…X。,其中表示符號(hào)位,這個(gè)數(shù)是一個(gè)純
小數(shù),如圖3-2所示。定點(diǎn)小數(shù)的小數(shù)點(diǎn)位置是隱含約定的,小數(shù)點(diǎn)并不
需要真正占據(jù)一個(gè)二進(jìn)制位。
第三章182011-12-31
當(dāng)Xs=O、X.l、Xz=l、…、x『l時(shí),X為最大正數(shù),即X最大正數(shù)=(l-2n)
當(dāng)X§=0、X]=0、…、Xn_j=0>X01時(shí),X為最小正數(shù),即X最小正數(shù)=2華
當(dāng)Xs=l時(shí),表示X為負(fù)數(shù),此時(shí)情況比較復(fù)雜,因?yàn)樵谟?jì)算機(jī)中帶符號(hào)
的數(shù)可以用補(bǔ)碼表示,也可以用原碼表示。如前所述,原碼與補(bǔ)碼所表示
的絕對(duì)值最大的負(fù)數(shù)是不同的,所以原碼和補(bǔ)碼的表示范圍有一些差別。
設(shè)機(jī)器字長(zhǎng)有n位,貝I」:
原碼定點(diǎn)小數(shù)表示位的范圍為:一(1—2-n)?(1—2-n)。
補(bǔ)碼定點(diǎn)小數(shù)表示位的范圍為:一1?(1—2-n)o
圖3-2定點(diǎn)小數(shù)格式
第三章192011-12-31
2.定點(diǎn)整數(shù)
小數(shù)點(diǎn)的位置隱含固定在最低有效數(shù)位之后時(shí),機(jī)器內(nèi)的數(shù)稱(chēng)為純
整數(shù)。記作XsX]X2…Xn,這是一個(gè)純整數(shù),如圖3-3所示。
圖3-3定點(diǎn)整數(shù)格式
n
原碼定點(diǎn)整數(shù)表示位的范圍為:一(2n—1)?(2—1)O
11n
補(bǔ)碼定點(diǎn)整數(shù)表示位的范圍為:-2?(2—1)o
X最小正數(shù)二1
第三章202011-12-31
在定點(diǎn)表示法中,參加運(yùn)算的數(shù)以及運(yùn)算的結(jié)果都必須保證在該
定點(diǎn)數(shù)所能表示的數(shù)值范圍內(nèi)。如遇到絕對(duì)值小于最小正數(shù)的數(shù),被
當(dāng)作機(jī)器0處理,稱(chēng)為“下溢”;而大于最大正數(shù)和小于絕對(duì)值最大的
負(fù)數(shù)的數(shù),統(tǒng)稱(chēng)為“溢出”。這時(shí)計(jì)算機(jī)將暫時(shí)中斷運(yùn)算操作,去進(jìn)
行溢出處理。
只能處理定點(diǎn)數(shù)的計(jì)算機(jī)稱(chēng)為定點(diǎn)計(jì)算機(jī)。由于小數(shù)點(diǎn)的位置固
定不變,因此當(dāng)機(jī)器處理的數(shù)不是純小數(shù)或純整數(shù)時(shí),必須設(shè)定一個(gè)
比例因子,把原始的數(shù)縮小成定點(diǎn)小數(shù)或擴(kuò)大成定點(diǎn)整數(shù)后再進(jìn)行處
理,所得到的運(yùn)算結(jié)果還必須根據(jù)比例因子還原成實(shí)際的數(shù)值。選擇
合適的比例因子非常重要,必須保證參加運(yùn)算的初始數(shù)據(jù)、中間結(jié)果
和最后結(jié)果都在定點(diǎn)數(shù)的表示范圍之內(nèi),否則將會(huì)產(chǎn)生“溢出”。
第三章212011-12-31
322浮點(diǎn)表示法
i.浮點(diǎn)數(shù)的表示形式
使用定點(diǎn)表示法能表示以o為中心的一定范圍的正、負(fù)的整數(shù)或小數(shù)。
實(shí)際上計(jì)算機(jī)中處理的數(shù)不一定是純小數(shù)或純整數(shù),而且有些數(shù)據(jù)的數(shù)
值范圍相差很大,它們都不能直接用定點(diǎn)數(shù)表示,但均可用浮點(diǎn)數(shù)表示。
浮點(diǎn)數(shù)即小數(shù)點(diǎn)的位置可以浮動(dòng)的數(shù),如
325.78=3.2578X102=3257.8XIO-1=0.32578X103
顯然,這里小數(shù)點(diǎn)的位置是變化的,但因?yàn)榉謩e乘上了不同的10的
方幕,因此值不變。通常浮點(diǎn)數(shù)可表示成
N=MXrE
式中M為尾數(shù)(可正可負(fù)),E為階碼(可正可負(fù)),r是基數(shù)(或基
值)。在大多數(shù)計(jì)算機(jī)中,尾數(shù)為純小數(shù),常用原碼或補(bǔ)碼表示;階碼
為定點(diǎn)整數(shù),常用補(bǔ)碼表示;基數(shù)可取2、4、6、8、16等,通常廠2。
第三章222011-12-31
浮點(diǎn)數(shù)在機(jī)器中的形式如圖3-4所示。采用這種數(shù)據(jù)格式的機(jī)器稱(chēng)
為浮點(diǎn)機(jī)。浮點(diǎn)數(shù)的基數(shù)是隱含的,在整個(gè)機(jī)器數(shù)中不出現(xiàn)。階碼的符
號(hào)位為es,階碼的大小反映了在數(shù)N中小數(shù)點(diǎn)的實(shí)際位置;尾數(shù)的符號(hào)位
為叫,它也是整個(gè)浮點(diǎn)數(shù)的符號(hào)位,表示了該浮點(diǎn)數(shù)的正、負(fù)。
可見(jiàn),浮點(diǎn)數(shù)有階碼和尾數(shù)兩部分組成。浮點(diǎn)數(shù)的表示范圍主要由
階碼決定,有效數(shù)字的精度主要由尾數(shù)就決定。
1位<k位>1位<n位
m
0
階碼E尾數(shù)M
圖3?4浮點(diǎn)數(shù)的一般格式
第三章232011-12-31
2.浮點(diǎn)數(shù)的表示范圍
設(shè)某浮點(diǎn)數(shù)的格式如圖3-4所示,k和n分別表示階碼和尾數(shù)的位數(shù)
(不包括符號(hào)位),尾數(shù)和階碼均用補(bǔ)碼表示。
當(dāng)es=O,ms=0,階碼和尾數(shù)的數(shù)值位各位都為1(即階碼和尾數(shù)都為
最大正數(shù))時(shí),該浮點(diǎn)數(shù)為最大正數(shù):
X最大正數(shù)=(1-2?2
當(dāng)e§=l,ms=0,尾數(shù)的最低位irin=l,其余各位為0(即階碼為絕對(duì)
值最大的負(fù)數(shù),尾數(shù)為最小正數(shù))時(shí),該浮點(diǎn)數(shù)為最小正數(shù):
ck
X最小正數(shù)=2、2-2
當(dāng)es=0,階碼的數(shù)值位全為1;ms=l,尾數(shù)的數(shù)值位全為0(即階碼
為絕對(duì)值最大的正數(shù),尾數(shù)為絕對(duì)值最大的負(fù)數(shù))時(shí),該浮點(diǎn)數(shù)為絕對(duì)
值最大負(fù)數(shù):
V—_]*?2T
八絕對(duì)值最大的負(fù)數(shù)一n
第三章242011-12-31
3.浮點(diǎn)數(shù)的規(guī)格化
為了提高浮點(diǎn)數(shù)的精度,必須充分利用尾數(shù)的有效位數(shù),通常采取
浮點(diǎn)數(shù)規(guī)格化形式,即規(guī)定尾數(shù)的最高位數(shù)必須是一個(gè)有效數(shù)值。如果
不是規(guī)格化數(shù),就要通過(guò)修改階碼并同時(shí)左右移尾數(shù)的方法,使其變成
規(guī)格化數(shù)。將非規(guī)格化數(shù)轉(zhuǎn)換成規(guī)格化數(shù)的過(guò)程叫做規(guī)格化。對(duì)于基數(shù)
不同的浮點(diǎn)數(shù),因其規(guī)格化數(shù)的形式不同規(guī)格化過(guò)程也不同。
一個(gè)浮點(diǎn)數(shù)的表示形式不是唯一的。例如二進(jìn)制數(shù)0.0001011可表
示為0.001011X2T、0.01011X2-2>0.1011X2—3…,而其中只有
0.10HX2-3是規(guī)格化數(shù)。
在尾數(shù)用原碼表示時(shí),規(guī)格化浮點(diǎn)數(shù)的尾數(shù)的最高數(shù)位總等于1。
第三章252011-12-31
3.2.3浮點(diǎn)數(shù)階碼的移碼表示法
浮點(diǎn)數(shù)的階碼是帶符號(hào)的定點(diǎn)整數(shù),因此它可以用前面介紹的任何
一種機(jī)器數(shù)的表示方法來(lái)表示。但在大多數(shù)計(jì)算機(jī)中,多采用補(bǔ)碼表示
法或另外一種編碼方法——移碼表示法。
設(shè)定點(diǎn)整數(shù)的移碼形式為X0X]X2…Xn,字長(zhǎng)為n+1位,則移碼的定義為
[X]移=2n+X-2n<X<2n
式中:[X]移表示移碼,X為真值。
根據(jù)定義可知,移碼就是真值X加一個(gè)常數(shù)2%相當(dāng)于X在數(shù)軸上向
正方向平移了2n個(gè)單位,由此而得“移碼”之稱(chēng)。移碼也可稱(chēng)為增碼或
偏碼,常數(shù)2n稱(chēng)為偏置量或偏置值。
將移碼的定義和補(bǔ)碼的定義相比較,可以找出移碼和補(bǔ)碼之間的關(guān)系:
X0<X<2n
因?yàn)?/p>
2n+,+X=2n+,-IXI-2"<X<0
第三章262011-12-31
表3-2給出了移碼、補(bǔ)碼和真值之間的關(guān)系。
表3?2移碼、補(bǔ)碼和真值之間的關(guān)系
真值X(十進(jìn)制)真值X(二進(jìn)制)[X]補(bǔ)[X]移
-128-100000001000000000000000
-127-11111111000000100000001
????????????
-1-00000011111111101111111
000000000000000010000000
100000010000000110000001
????????????
12711111110111111111111111
第三章272011-12-31
從表3-2中,可看出移碼具有以下特點(diǎn):
(1)在移碼中,最高位為“0”表示負(fù)數(shù),最高位為“1”表示正數(shù),這
與原碼、補(bǔ)碼、反碼的符號(hào)位取值相反;
(2)移碼全為0時(shí),它所對(duì)應(yīng)的真值最??;全為1時(shí)所對(duì)應(yīng)的真值最大。
因此移碼的大小直觀地反映了真值得大小,有助于兩個(gè)浮點(diǎn)數(shù)進(jìn)行階碼
的大小比較;
(3)真值0在移碼中的表示形式也是唯一的,即[+0]補(bǔ)二[-0]補(bǔ)
=100...0;
(4)移碼把真值映射到一個(gè)正數(shù)域,所以可將移碼視為無(wú)符號(hào)數(shù),直
接按無(wú)符號(hào)數(shù)規(guī)則比較大?。?/p>
(5)同一數(shù)值的移碼和補(bǔ)碼除最高位相反外,其他各位相同。
(6)移碼的偏置量并不唯一,根據(jù)所要表示的移碼值范圍來(lái)選擇不同
的偏置量,需要注意的是IEEE754的標(biāo)準(zhǔn)中8位二進(jìn)制的偏移量的取值為
127。
第三章282011-12-31
3.2.4實(shí)用浮點(diǎn)數(shù)舉例
在現(xiàn)代計(jì)算機(jī)中,浮點(diǎn)數(shù)一般采用國(guó)際標(biāo)準(zhǔn)IEEE754,這種標(biāo)準(zhǔn)的
形式如圖3-5所不。
ms階碼(含階符)尾數(shù)
數(shù)符小數(shù)點(diǎn)位置
圖3-5IEEE754標(biāo)準(zhǔn)的浮點(diǎn)數(shù)形式
第三章292011-12-31
按照IEEE754標(biāo)準(zhǔn),常用的浮點(diǎn)數(shù)有三種,它們具體的格式見(jiàn)表3-3。
表3?3IEEE754標(biāo)準(zhǔn)中的三種浮點(diǎn)數(shù)
類(lèi)型數(shù)符階碼尾數(shù)總位數(shù)偏置值
r^3
短浮點(diǎn)數(shù)18327FH
長(zhǎng)浮點(diǎn)數(shù)11152643FFH
臨時(shí)浮點(diǎn)數(shù)11564r^o3FFFH
下面以32位的短浮點(diǎn)數(shù)為例,討論浮點(diǎn)代碼與真值之間的關(guān)系。最高
位為數(shù)符位;其后是8位階碼,以2為底,階碼的偏置值為127;其余23位
是尾數(shù)。為了使尾數(shù)部分能表示多一位的有效值,IEEE754標(biāo)準(zhǔn)采用隱含
尾數(shù)最高數(shù)位1的方法(即這一位1不表示出來(lái)),因此尾數(shù)實(shí)際上是24位。
需要注意的是,隱含的1是一位整數(shù)(即位權(quán)為2。)。在浮點(diǎn)格式中表示
出來(lái)的23位尾數(shù)是純小數(shù),并用原碼表示。
第三章302011-12-31
例3-3:將(56.25)I。轉(zhuǎn)換成短浮點(diǎn)數(shù)。
解:(1)把十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)
(56.25)10二(111000.01)2
(2)規(guī)格化二進(jìn)制數(shù)
111000.01=1.1100001X25
(3)算出移碼(階碼真值+偏置值)
101+01111111-10000100
(4)短浮點(diǎn)數(shù)格式存儲(chǔ)該數(shù)
因?yàn)?/p>
符號(hào)位二0
階碼二10000100
尾數(shù)二11000010000000000000000
所以短浮點(diǎn)數(shù)代碼為:0;10000100;11000010000000000000000
表示為十六進(jìn)制的代碼為:42610000Ho
第三章312011-12-31
例3-4:把短浮點(diǎn)數(shù)C1C90000H轉(zhuǎn)換成十進(jìn)制數(shù)。
(1)把十六進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù),并分離出符號(hào)位、階碼和尾數(shù)
因?yàn)镃1C90000H二11000001110010010000000000000000
所以,符號(hào)位二1
階碼二10000011
尾數(shù)二10010010000000000000000
(2)計(jì)算出階碼真值(移碼一偏置值)
10000011-01111111=100
(3)以規(guī)格化二進(jìn)制數(shù)形式寫(xiě)出此數(shù)
1.1001001X24
(4)寫(xiě)成非規(guī)格化二進(jìn)制數(shù)形式
11001.001
(5)轉(zhuǎn)換成十進(jìn)制數(shù),并加上符號(hào)位
(11001.001)2二(25.125)10
所以,該浮點(diǎn)數(shù)為-25.125
第三章322011-12-31
3.3數(shù)值運(yùn)算
3.3.1定點(diǎn)四則運(yùn)算
定點(diǎn)四則運(yùn)算包括加、減、乘、除運(yùn)算。
1.補(bǔ)碼加法運(yùn)算
上一節(jié)我們介紹了數(shù)的補(bǔ)碼表示法,負(fù)數(shù)用補(bǔ)碼表示后,就可以和
正數(shù)一樣來(lái)處理。這樣,運(yùn)算器里只需要一個(gè)加法器就可以了,不必為
了負(fù)數(shù)的加法運(yùn)算,再配一個(gè)加法器。
補(bǔ)碼加法的公式是:
[X]補(bǔ)+[Y]補(bǔ)=[X+Y]補(bǔ)(mod2)
上述公式表明,在模2意義下,任意兩個(gè)數(shù)的補(bǔ)碼之和等于該兩個(gè)
數(shù)之和的補(bǔ)碼。這是補(bǔ)碼加法的理論基礎(chǔ),其結(jié)論也適用定點(diǎn)整數(shù)。
補(bǔ)碼加法有以下特點(diǎn):一是符號(hào)位要作為數(shù)的一部分一起參加運(yùn)算;
二是要在模2的意義下相加,即超過(guò)2的進(jìn)位要舍去。
第三章332011-12-31
2.補(bǔ)碼減法運(yùn)算
負(fù)數(shù)的加法要利用補(bǔ)碼化為加法來(lái)做,減法運(yùn)算當(dāng)然也要設(shè)法化為
加法來(lái)做。之所以使用這種方法而不直接使用減法,是因?yàn)樗梢院统?/p>
規(guī)的加法運(yùn)算使用同一個(gè)加法器電路,從而簡(jiǎn)化了計(jì)算機(jī)的設(shè)計(jì)。
補(bǔ)碼減法運(yùn)算的公式為:
[X—Y]補(bǔ)=[X]補(bǔ)一[Y]補(bǔ)=[X]補(bǔ)+[—Y]補(bǔ)(mod2)
因此,若機(jī)器數(shù)采用補(bǔ)碼,當(dāng)求X—Y時(shí),只需先求LY]補(bǔ)(稱(chēng)[—
Y]補(bǔ)為“變補(bǔ)”后的減數(shù)),就可以按照補(bǔ)碼加法規(guī)則進(jìn)行運(yùn)算。而[—
Y]補(bǔ)由[Y]補(bǔ)連同符號(hào)位在內(nèi),每位取反,末位加1而得。
第三章342011-12-31
3.溢出判斷
在定點(diǎn)小數(shù)機(jī)器中,數(shù)的表示范圍為|X|VI。在運(yùn)算過(guò)程中如出現(xiàn)
大于1的現(xiàn)象,稱(chēng)為“溢出”。在定點(diǎn)中,正常情況下溢出是不允許的。
兩個(gè)正數(shù)相加,結(jié)果大于機(jī)器所能表示的最大正數(shù),成為正溢。而
兩個(gè)負(fù)數(shù)相加,結(jié)果小于機(jī)器所能表示的最小負(fù)數(shù),成為負(fù)溢。如圖3-
6所示,對(duì)定點(diǎn)正數(shù)而言,也同樣存在正溢、負(fù)溢問(wèn)題。
負(fù)溢<一可表示的數(shù)一》正溢
-10+1
圖3-6定點(diǎn)小數(shù)的溢出
第三章352011-12-31
為了保證計(jì)算的正確性,我們必須要對(duì)溢出進(jìn)行檢測(cè)。判斷“溢出”
是否發(fā)生,可采用兩種檢測(cè)方法。第一種方法是采用雙符號(hào)位法,這稱(chēng)
為“變形補(bǔ)碼”或“模4補(bǔ)碼”,從而使模2補(bǔ)碼所能表示的數(shù)的范圍擴(kuò)
大了一倍。采用變形補(bǔ)碼后,任何小于1的正數(shù),兩位符號(hào)位都是“0”;
任何大于一的1負(fù)數(shù),兩個(gè)符號(hào)位都是“1”,兩個(gè)數(shù)相加后,其結(jié)果的
符號(hào)出現(xiàn)“01”或“10”兩個(gè)組合時(shí),表示發(fā)生溢出。這是因?yàn)閮蓚€(gè)絕對(duì)
值小于1的數(shù)相加,其結(jié)果不會(huì)大于或等于2,而最高符號(hào)位永遠(yuǎn)表示結(jié)
果的正確符號(hào)。
第三章362011-12-31
我們可以得出如下結(jié)論:
(1)當(dāng)以模4補(bǔ)碼運(yùn)算,運(yùn)算結(jié)果的兩個(gè)符號(hào)位相異時(shí),表示溢出;
相同時(shí),表示未溢出。所以溢出邏輯表達(dá)式為V二SfRf2,其中$門(mén)和S’2分
別表示為最高符號(hào)位和第二符號(hào)位。此邏輯表達(dá)式可用異或門(mén)實(shí)現(xiàn)。
(2)模4補(bǔ)碼相加的結(jié)果,不論是否溢出,最高符號(hào)位始終表示正確
的符號(hào)。
(3)第二種溢出檢測(cè)的方法是采用單符號(hào)位法。從例9和例10中可看
出,當(dāng)最高有效位產(chǎn)生進(jìn)位而符號(hào)位無(wú)進(jìn)位時(shí),產(chǎn)生正溢;當(dāng)最高有效
位無(wú)進(jìn)位而符號(hào)位有進(jìn)位時(shí),產(chǎn)生負(fù)溢。所以溢出邏輯表示式為V=CfC0,
其中Cf表示符號(hào)位產(chǎn)生的進(jìn)位,C。表示最高有效位產(chǎn)生的進(jìn)位。此邏輯
表達(dá)式也可用異或門(mén)實(shí)現(xiàn)。
在定點(diǎn)機(jī)中,當(dāng)運(yùn)算結(jié)果發(fā)生溢出時(shí),機(jī)器通過(guò)邏輯電路自動(dòng)檢測(cè)
出這種益處,并進(jìn)行中斷處理。
第三章372011-12-31
4.乘法運(yùn)算
與加法和減法相比,無(wú)論是用硬件還是用軟件來(lái)完成。乘法都是一
個(gè)復(fù)雜的操作。各種各樣的算法已用于各類(lèi)計(jì)算機(jī)中。我們先介紹兩個(gè)
無(wú)符號(hào)整數(shù)相乘的過(guò)程,然后再介紹實(shí)現(xiàn)兩個(gè)補(bǔ)碼表示數(shù)的乘法的最普
遍的技術(shù)。
(1)無(wú)符號(hào)整數(shù)乘法
由圖3?7所示的手工乘法過(guò)程,可得到如下幾點(diǎn)重要結(jié)論:
1011被乘數(shù)11
X1101乘數(shù)13
1011
0000
1011
1011
10001111
圖3-7無(wú)符號(hào)二進(jìn)制乘法
第三章382011-12-31
1)乘法涉及到部分積的生成,乘數(shù)的每一位對(duì)應(yīng)一個(gè)部分積。然后,
部分積相加得到最后的乘積。
2)部分積是容易確定的。當(dāng)乘數(shù)的位是0時(shí),其部分積也是0;當(dāng)乘
數(shù)的位是1時(shí),其部分積是被乘數(shù)。
3)部分積通過(guò)求和而得到最后乘積。為此,后面的部分積總要比它
前面的部分積左移一個(gè)位置。
4)兩個(gè)n位二進(jìn)制整數(shù)的乘法導(dǎo)致其積的長(zhǎng)度為2n位。
與手工演算相比,計(jì)算機(jī)能做幾件事使操作更有效。首先,可以邊產(chǎn)
生部分積邊做加法,而不是等到最后再相加。這就取消了存儲(chǔ)所有部分
積的需求;只需要少數(shù)幾個(gè)寄存器。其次,我們能節(jié)省某些部分積的生
成時(shí)間,對(duì)于乘數(shù)的每個(gè)1,需要加和移位兩個(gè)操作;但對(duì)于每個(gè)0,則
只需移位操作。
第三章392011-12-31
圖3-8表示了一種采用此方式的實(shí)現(xiàn)方案。
乘數(shù)和被乘數(shù)分別裝入兩個(gè)寄存器(Q和M)。還需要第三個(gè)寄存
器A,初始設(shè)置為0。還需要一個(gè)1位寄存器C,初始值為0,用于保存加
法可能產(chǎn)生的進(jìn)位。
被乘數(shù)
乘數(shù)
圖3-8無(wú)符號(hào)二進(jìn)制乘法實(shí)現(xiàn)硬件
第三章402011-12-31
乘法器的操作如下???/p>
制邏輯每次讀乘數(shù)的一位。
若Qo是1,則被乘數(shù)與A寄存
器相加并將結(jié)果存于A寄存
器。然后,C、A和Q各寄存
器的所有位向右移一位,于
是C位進(jìn)入A。/,進(jìn)入Qz,
而Qo丟失。若Qo是0,則只
需進(jìn)位,無(wú)需完成加法。對(duì)
原始的乘數(shù)每一位重復(fù)上述
過(guò)程。產(chǎn)生的2n位積存于A
和Q寄存器。這種操作的流積在A,Q中
程圖如圖3-9所示。
圖3-9無(wú)符號(hào)二進(jìn)制乘法流程圖
第三章412011-12-31
(2)補(bǔ)碼乘法
在計(jì)算機(jī)中帶符號(hào)數(shù)一般都用補(bǔ)碼表示,補(bǔ)碼的加減法非常簡(jiǎn)單,
在以加減運(yùn)算為主的通用機(jī)中,操作數(shù)都用補(bǔ)碼表示,所以這類(lèi)計(jì)算機(jī)
在做乘法時(shí)也使用補(bǔ)碼。
最常用的補(bǔ)碼乘法算法是Booth算法,又稱(chēng)比較法。
設(shè)被乘數(shù)[X]補(bǔ)=Xs.XRz…X/乘數(shù)[Y]補(bǔ)=Ys.YM…Yn。在乘數(shù)的最低位
置后增加一位附加位Ya,它初值為3增加附加位不會(huì)影響運(yùn)算結(jié)果。
每次運(yùn)算取決于乘數(shù)相鄰兩位Yj+1的值,把它們稱(chēng)為乘法的判斷
位。這種運(yùn)算是根據(jù)乘數(shù)相鄰兩位的比較結(jié)果(Yi+1—Yj)來(lái)確定運(yùn)算操
作,因此稱(chēng)為比較法。
第三章422011-12-31
Booth算法規(guī)則如下:
1)參加運(yùn)算的數(shù)用補(bǔ)碼表示;
2)符號(hào)位參加運(yùn)算;
3)由于每求一次部分積要右移一位,所以乘數(shù)的最低兩位Yn、Yn+1的
值決定了每次執(zhí)行的操作,如表3-4所示;
4)移位按補(bǔ)碼右移規(guī)則進(jìn)行,右移前:XX]X2…X,右移后:XX
X]???Xn_2Xn_p
5)共需要進(jìn)行n+1次累加,n次移位。
表3-4Booth乘法運(yùn)算操作
判斷位丫口、Y/]I
0~0原部分積右移一位
。1原部分積加[X]補(bǔ)后右移一位
10原部分積加[—x]補(bǔ)后右移一位
11原部分積右移一位
第三章432011-12-31
圖3-10給出了Booth算法的框圖。被乘數(shù)和乘數(shù)分別放入B和C寄存
器內(nèi)。乘法的結(jié)果將出現(xiàn)在A和C寄存器中。A和附加位CM初始化為0。
運(yùn)算過(guò)程中,控制邏輯每次掃描C寄存器中的最低兩位CnG+i。若兩位
相同(11或00),則A、C寄存器的所有位向右移一位。若兩位不同,當(dāng)
時(shí),則A寄存器的內(nèi)容加B寄存器的內(nèi)容(即被乘數(shù));當(dāng)
CnCn+i=l。時(shí),A寄存器的內(nèi)容減去B寄存器的內(nèi)容被乘數(shù)(即加上B寄
存器中內(nèi)容的反),加減之后再右移。無(wú)論哪種情況,右移是這樣進(jìn)行
的:A的最左位,即A一位,不僅要移入A。?,而且還要保留在A-中。
這要求保留A和C中的符號(hào)。這種移位方式稱(chēng)為算術(shù)移位(Arithmetic
Shift),因?yàn)樗A袅朔?hào)位。
第三章442011-12-31
圖3-10補(bǔ)碼乘法的Booth算法
第三章452011-12-31
5.除法運(yùn)算
除法要比乘法更復(fù)雜,但也是基于同樣的通用原則。如上所述,算法
的基礎(chǔ)是紙和筆的演算方法,而且操作涉及到重復(fù)的移位和加減法。
00001101商
除數(shù)1011)10010011被除數(shù)
1011
部分余001110
1011
001111
________1011
100余數(shù)
圖3-11無(wú)符號(hào)二進(jìn)制整數(shù)除法
第三章462011-12-31
圖3-11表示的是一個(gè)無(wú)符號(hào)二進(jìn)制整數(shù)長(zhǎng)除的例子。首先,從左到右
檢查被除數(shù)的位,直到被檢查的位所表示的數(shù)大于或等于除數(shù);這被稱(chēng)
為除數(shù)能去“除”此數(shù)。直到這個(gè)事件出現(xiàn)之前,一串0從左到右放入
商中,。當(dāng)事件出現(xiàn)時(shí),一個(gè)1放入商并且由此部分被除數(shù)中減去除數(shù)。
結(jié)果被稱(chēng)為部分余(PartialRemainder),由此開(kāi)始除法呈現(xiàn)一種循
環(huán)樣式。在每一循環(huán)中,被除數(shù)的其他位續(xù)加到部分余上,直到結(jié)果大
于或等于除數(shù)。同前,由這個(gè)數(shù)減去除數(shù)并產(chǎn)生新的部分余。此過(guò)程繼
續(xù)下去,直到被除數(shù)的所有位都被用完。
事實(shí)上,機(jī)器的運(yùn)算過(guò)程和人畢竟不同,人會(huì)心算,一看就知道夠不
夠減。但機(jī)器卻不會(huì)心算,必須先做減法,若余數(shù)為正,才知道夠減;
若余數(shù)為負(fù),才知道不夠減。不夠減時(shí)必須恢復(fù)原來(lái)的余數(shù),以便再繼
續(xù)往下運(yùn)算,這種方法稱(chēng)為恢復(fù)余數(shù)法。
第三章472011-12-31
要恢復(fù)原來(lái)的余數(shù),只要當(dāng)前的余數(shù)加上除數(shù)即可。但由于要恢復(fù)余
數(shù),使除法進(jìn)行過(guò)程的步數(shù)不固定,因此控制比較復(fù)雜。實(shí)際中常用不
恢復(fù)余數(shù)法,又稱(chēng)加減交替法。其特點(diǎn)是運(yùn)算過(guò)程中如出現(xiàn)不夠減,則
不必恢復(fù)余數(shù),根據(jù)余數(shù)符號(hào),可以繼續(xù)往下運(yùn)算,因此步數(shù)固定,控
制簡(jiǎn)單。
加減交替法的規(guī)則是:當(dāng)余數(shù)為正時(shí),商“1”,余數(shù)左移一位,減除
數(shù);當(dāng)余數(shù)為負(fù)時(shí),商“0”,余數(shù)左移一位,加除數(shù)。
第三章482011-12-31
3.3.2浮點(diǎn)四則運(yùn)算
1.浮點(diǎn)加法、減法運(yùn)算
設(shè)有兩個(gè)浮點(diǎn)數(shù)X和Y,它們分別為
X=2LxX
Y=。Yx2EY
其中Ex和Ey分別為數(shù)X和Y的階碼,Mx和%為X和Y的尾數(shù)。
兩個(gè)浮點(diǎn)數(shù)進(jìn)行加法和減法的運(yùn)算規(guī)則是:
EX-EYEY
Z=X±Y=(MxX2±MY)X2EX<EY
由于浮點(diǎn)數(shù)尾數(shù)的小數(shù)點(diǎn)均固定在第一數(shù)值位前,所以尾數(shù)的加減運(yùn)算
規(guī)則與定點(diǎn)數(shù)完全相同。但由于其階碼的大小有直接反映尾數(shù)有效值的
小數(shù)點(diǎn)位置,因此當(dāng)浮點(diǎn)數(shù)階碼不等時(shí),因兩尾數(shù)小數(shù)點(diǎn)的實(shí)際位置不
一樣,尾數(shù)部分無(wú)法直接進(jìn)行加減運(yùn)算,因此必須先進(jìn)行“對(duì)階”,
使兩數(shù)的小數(shù)點(diǎn)位置對(duì)齊。
第三章492011-12-31
完成浮點(diǎn)數(shù)加減法運(yùn)算的操作過(guò)程大體分為四個(gè)基本步驟:
(1)0操作數(shù)檢查;
(2)比較階碼并完成對(duì)階;
(3)尾數(shù)進(jìn)行加或減運(yùn)算;
⑷規(guī)格化結(jié)果并進(jìn)行舍入處理。
圖3?12所示為浮點(diǎn)數(shù)加減運(yùn)算的操作流程圖。
第三章502011-12-31
圖3-12浮點(diǎn)加減運(yùn)算的操作流程
第三章512011-12-31
第一步為0操作數(shù)檢查,如果判知兩個(gè)操作數(shù)X或Y中有一個(gè)數(shù)為0,那
么另一個(gè)數(shù)即為運(yùn)算結(jié)果,而沒(méi)有必要再進(jìn)行后續(xù)的一系列操作,以節(jié)
省運(yùn)算時(shí)間。
第二步是使兩個(gè)操作數(shù)的指數(shù)相同。兩個(gè)浮點(diǎn)數(shù)進(jìn)行加減,首先要
看兩個(gè)數(shù)的階碼是否相同,即小數(shù)點(diǎn)位置是否對(duì)齊。若兩個(gè)數(shù)階碼相同,
表示小數(shù)點(diǎn)是對(duì)齊的,就可以進(jìn)行尾數(shù)的加減運(yùn)算。反之,若兩個(gè)數(shù)階
碼不同,表示小數(shù)點(diǎn)位置沒(méi)有對(duì)齊,此時(shí)必須使兩個(gè)數(shù)階碼相同,這個(gè)
過(guò)程叫做對(duì)階。
第三步是尾數(shù)求和運(yùn)算,包括它們的符號(hào)。不論是加法還是減法,都
按加法進(jìn)行操作,其方法與定點(diǎn)加減運(yùn)算完全相同。
最后一步是規(guī)格化結(jié)果。若尾數(shù)部分得到的結(jié)果不是規(guī)格化數(shù),必須把
它變成規(guī)格化數(shù)。對(duì)于雙符號(hào)來(lái)說(shuō),規(guī)格化數(shù)的形式是001義…X或
110X...Xo
第三章522011-12-31
規(guī)格化處理的規(guī)則如下:
1)結(jié)果尾數(shù)的兩個(gè)符號(hào)位值不同(01或10),這就表明尾數(shù)運(yùn)算結(jié)果
溢出,應(yīng)進(jìn)行右規(guī)格化處理,即將結(jié)果尾數(shù)向右移一位,并將階碼值加
lo
2)若結(jié)果尾數(shù)運(yùn)算不溢出,但最高數(shù)位值與符號(hào)位的值相同,這就表
明不符合規(guī)格化規(guī)則,應(yīng)進(jìn)行左規(guī)格化處理,這時(shí)應(yīng)將結(jié)果尾數(shù)重復(fù)左
移,每移一位階碼減1,知道出現(xiàn)最高數(shù)值位與符號(hào)位的值不同為止。
在對(duì)階或向右規(guī)格化時(shí),尾數(shù)要向右移位。這樣被移位的尾數(shù)的低位
部分就會(huì)被丟掉,從而造成一定的誤差,因此要進(jìn)行舍入處理。簡(jiǎn)單的
舍入如處理方法有兩種:一種是“0舍1入”法,即如果右移時(shí)被丟掉的
數(shù)位的最高位為0則舍去,為1則將尾數(shù)的末位加1。另一種方法是“恒
置1”法,即只要數(shù)位被移掉,就在尾數(shù)的末位恒置1。
第三章532011-12-31
在IEEE754標(biāo)準(zhǔn)中,舍入處理提供了四種可選方法:
?就近舍入:結(jié)果被舍入成最近的可表示的數(shù)。其實(shí)質(zhì)就是通常所說(shuō)
的“四舍五入”。例如,尾數(shù)超出規(guī)定的23位的多余位數(shù)字是10010,
多于位的值超過(guò)規(guī)定的最低有效位值的一半,故最低有效位應(yīng)增1。若
多余的5位是01111,則簡(jiǎn)單的截尾即可。對(duì)多余的5位10000這種特殊情
況:若最低有效位現(xiàn)在為0,則截尾;若最低有效位現(xiàn)為1,則向上進(jìn)1
位使其變?yōu)?。
?朝+8舍入:結(jié)果向正無(wú)窮大方向取舍。對(duì)正數(shù)來(lái)說(shuō),只要多余位不
全為0,則向最低有效位進(jìn)1;對(duì)負(fù)數(shù)來(lái)說(shuō),則是簡(jiǎn)單的截尾。
?朝一8舍入:結(jié)果向負(fù)無(wú)窮大方向取舍。對(duì)正數(shù)來(lái)說(shuō),則是簡(jiǎn)單的截
尾;對(duì)負(fù)數(shù)來(lái)說(shuō),只要多余位不全為0,則向最低有效位進(jìn)1。
?朝0舍入:結(jié)果朝0取舍。即朝數(shù)軸原點(diǎn)方向舍入,就是簡(jiǎn)單的截尾。
無(wú)論尾數(shù)是正數(shù)還是負(fù)數(shù),截位都使取值的絕對(duì)總值比原值的絕對(duì)值小。
這種方法容易導(dǎo)致誤差。
第三章542011-12-31
2.浮點(diǎn)乘法、除法運(yùn)算
(1)浮點(diǎn)乘法、除法運(yùn)算規(guī)則
設(shè)有兩個(gè)浮點(diǎn)數(shù)X和Y:
可見(jiàn),乘積的尾數(shù)是相乘兩數(shù)的尾數(shù)之積,乘積的階碼是相乘兩數(shù)的
階碼之和。當(dāng)然,這里也有規(guī)格化和舍入等步驟。
設(shè)有兩個(gè)浮點(diǎn)數(shù)X和Y:
第三章552011-12-31
(2)浮點(diǎn)乘法、除法運(yùn)算步驟
浮點(diǎn)數(shù)的乘除運(yùn)算大體可分為四步:第一步,0操作數(shù)檢查;第二步,
階碼加/減操作;
第三步,尾數(shù)乘/除操作;第四步,結(jié)果規(guī)格化及舍入處理。
圖3-13所示為浮點(diǎn)乘法的流程圖。無(wú)論哪個(gè)操作數(shù)為0,乘積即為0。
下一步是指數(shù)相加。若指數(shù)是移碼(偏移值指數(shù))形式,指數(shù)的和將會(huì)
有雙倍的偏置值,故應(yīng)從和中減去一個(gè)偏置值??赡軙?huì)出現(xiàn)指數(shù)上溢或
下溢,此時(shí)應(yīng)結(jié)束算法并報(bào)告。
若積的指數(shù)在一個(gè)恰當(dāng)?shù)姆秶鷥?nèi),則下一步應(yīng)是有效數(shù)相乘,包括它
們的符號(hào)一起考慮。有效數(shù)相乘與整數(shù)相乘的方法相同。積的長(zhǎng)度將是
被乘數(shù)和乘數(shù)的長(zhǎng)度的兩倍,多余的位將在舍入期間丟失掉。
得出乘積之后,下一步則是結(jié)果的規(guī)格化和舍入處理,同加、減法所做
的一樣。注意,規(guī)格化可能導(dǎo)致指數(shù)下溢出現(xiàn)。
第三章562011-12-31
圖3-13浮點(diǎn)乘法的流程圖
第三章572011-12-31
圖3-14所示為浮點(diǎn)除除法
法流程圖。第一步是測(cè)試
x=o?A階碼相減
0,若除數(shù)為0,或報(bào)告出
Y,V
加偏移
錯(cuò),或認(rèn)為是一個(gè)無(wú)窮大Z
的數(shù),取決于具體的實(shí)現(xiàn)。
工A溢出報(bào)告
返回工酚碼溢出?
若被除數(shù)是0,則結(jié)果是0。K7
下一步是被除數(shù)的指數(shù)減爸碼下溢?>報(bào)告下溢
除數(shù)的指數(shù)。這個(gè)過(guò)程把V
\r
偏置值去掉了,所以必須尾數(shù)相除I返回
▼
加上偏置值。然后對(duì)指數(shù)規(guī)格化
上溢或下溢進(jìn)行測(cè)試。▼
舍入
V
返回
圖3/4浮點(diǎn)除法流程圖
第三章582011-12-31
3.4算術(shù)邏輯運(yùn)算單元ALU
針對(duì)每一種算術(shù)運(yùn)算,都必須有一個(gè)相應(yīng)的基本硬件配置,其核心部
分是加法器和寄存器。當(dāng)需要完成邏輯運(yùn)算時(shí),勢(shì)必需要配置相應(yīng)的邏
輯電路,而ALU電路是既能完成算術(shù)運(yùn)算又能完成邏輯運(yùn)算的部件
3.4.1ALU電路
圖3-15是ALU框圖。圖中Aj和瑪為輸入變量;彩為控制信號(hào),&的不同
取值可決定該電路做哪種邏輯運(yùn)算;Fj是輸出函數(shù)。
圖3-15ALU框圖
第三章592011-12-31
為了實(shí)現(xiàn)算術(shù)/邏輯多功能運(yùn)算,則必須對(duì)全加器(F
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024至2030年中國(guó)門(mén)窗幕墻自然通風(fēng)器行業(yè)投資前景及策略咨詢研究報(bào)告
- 2024至2030年中國(guó)單層玻璃架行業(yè)投資前景及策略咨詢研究報(bào)告
- 2024至2030年綿羊靠墊項(xiàng)目投資價(jià)值分析報(bào)告
- 2024至2030年中國(guó)DL-冷醇數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2024年花箱項(xiàng)目可行性研究報(bào)告
- 2024年電瓶式自動(dòng)洗地吸干機(jī)項(xiàng)目可行性研究報(bào)告
- 中國(guó)永磁式電機(jī)行業(yè)市場(chǎng)現(xiàn)狀分析及競(jìng)爭(zhēng)格局與投資發(fā)展研究報(bào)告(2024-2030版)
- 2024-2030年黑茶行業(yè)風(fēng)險(xiǎn)投資發(fā)展分析及投資融資策略研究報(bào)告
- 2024-2030年鱭魚(yú)油行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 2025屆云南省昆明市祿勸縣一中高一物理第一學(xué)期期末教學(xué)質(zhì)量檢測(cè)試題含解析
- 超聲引導(dǎo)腰叢阻滯
- 香港公司購(gòu)銷(xiāo)合同模板(標(biāo)準(zhǔn)版)
- 分布式光伏發(fā)電項(xiàng)目EPC總承包合同
- 塌方(坍塌)事故現(xiàn)場(chǎng)應(yīng)急處置方案(表格化)
- 機(jī)電專(zhuān)業(yè)例會(huì)會(huì)議記錄
- CPK計(jì)算表格EXCEL模板
- (完整版)食品加工廠可行性研究報(bào)告
- SQE工作手冊(cè)范本
- 酶工程習(xí)題答案
- 肺脹病(慢性阻塞性肺疾病)中醫(yī)臨床路徑
- 基坑蓋挖逆作法及主體結(jié)構(gòu)施工方案
評(píng)論
0/150
提交評(píng)論