《計算機組織與系統(tǒng)結(jié)構(gòu)》-第3章計算機中的數(shù)值運算與運算器_第1頁
《計算機組織與系統(tǒng)結(jié)構(gòu)》-第3章計算機中的數(shù)值運算與運算器_第2頁
《計算機組織與系統(tǒng)結(jié)構(gòu)》-第3章計算機中的數(shù)值運算與運算器_第3頁
《計算機組織與系統(tǒng)結(jié)構(gòu)》-第3章計算機中的數(shù)值運算與運算器_第4頁
《計算機組織與系統(tǒng)結(jié)構(gòu)》-第3章計算機中的數(shù)值運算與運算器_第5頁
已閱讀5頁,還剩72頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3章計算機中的數(shù)值運算與運算器

本章學習目標

本章將介紹數(shù)據(jù)與文字在計算機中的表示方法,詳細講解數(shù)值數(shù)據(jù)

的原碼、補碼和反碼表示法以及它們之間的相互轉(zhuǎn)換,定點表示法、

浮點表示法、定點運算法、浮點運算方法和運算器的組成。通過本章

的學習,應(yīng)該重點掌握和理解以下內(nèi)容:

■了解數(shù)據(jù)、文字在計算機中的表示方法

-掌握原碼、補碼和反碼的表示方法,以及它們之間的相互轉(zhuǎn)換

■掌握定點表示法和浮點表示法

-掌握定點四則運算和浮點四則運算

第三章12011-12-31

3.1數(shù)值數(shù)據(jù)的表示

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

在計算機中,數(shù)據(jù)可分為無符號數(shù)和帶符號數(shù)。所謂無符號數(shù),是

指正整數(shù),機器字長的全部數(shù)位均用來表示數(shù)值的大小,相當于數(shù)的絕

對值。例如有兩個二進制數(shù)N1和N2。

Nl=01011表示十進制數(shù)11

N2=11011表示十進制數(shù)27

對于字長為n位的無符號數(shù)的表示范圍是0?2n-l。

一般計算機中都設(shè)有無符號數(shù)的運算和處理指令,還有一些轉(zhuǎn)移指

令也是專門針對無符號數(shù)的。

然而,我們在日常生活中會大量用到帶符號的數(shù),即正數(shù)和負數(shù),

我們用“+”、“一”號加絕對值來表示數(shù)值的大小。用這種形式表示的

數(shù)值在計算機技術(shù)中稱為“真值”。

第三章22011-12-31

但是,機器是無法識別符號“+”、“一”的,由于“+”、“一”恰

好是兩種截然不同的狀態(tài),如果用“0”表示“+”,用“I”表示“一”,

這樣符號就被數(shù)字化了,并且規(guī)定將它放在有符號數(shù)的前面,這樣就組

成了有符號數(shù)。這種在計算機中使用的、包括符號位在內(nèi)都被數(shù)字化了

的數(shù)稱為“機器數(shù)”或“機器碼”。機器數(shù)有三種不同的表示形式:原

碼、補碼和反碼。

對于帶符號數(shù)而言,上面例子中的兩個機器數(shù)Nl、N2的含義發(fā)生了

變化。

Nl=01011表示十進制數(shù)+n

N2=11011根據(jù)編碼的不同分別表示不同的值,如原碼時表示十進

制數(shù)一11

第三章32011-12-31

3.1.2原碼表示法

原碼表示法是一種最簡單的機器數(shù)表示法,用最高位表示符號位,

符號位為“o”表示該數(shù)為正數(shù),符號位為“1”表示該數(shù)為負數(shù),數(shù)值跟

隨其后,并以絕對值形式給出,這是與真值最接近的一種表示形式。

1.定點小數(shù)的原碼形式

設(shè)定點小數(shù)為±0了其…Xn,它的原碼形式為Xs%X2…Xn,其中Xs表

示符號位。原碼的定義為:

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.定點整數(shù)的原碼形式

設(shè)定點整數(shù)為±%X2…X。,它的原碼形式為Xs,XJ2…X。,其中Xs

表示符號位。原碼的定義為:

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)點是簡單易懂,機器數(shù)和真值之間的相互轉(zhuǎn)換非常

容易,用原碼實現(xiàn)乘、除運算的規(guī)則很簡單。但它的缺點是實現(xiàn)加、減

運算的規(guī)則較復雜,這是因為,當兩個數(shù)相加時,如果是同號則數(shù)值相

加,如果是異號,則兩數(shù)相減。而在進行減法運算時,還要比較絕對值

的大小,然后用大數(shù)減小數(shù),最后還要給結(jié)果選擇恰當?shù)姆枺瑸榱私?/p>

決這些矛盾,人們引入了補碼表示法。

3.1.3補碼表示法

補碼表示法的設(shè)想是:使符號位參加運算,從而簡化了加、減法的

運算規(guī)則;使減法運算轉(zhuǎn)化為加法運算,從而簡化了機器的運算器電路。

我們先以鐘表對時為例說明補碼的概念。假設(shè)有一只表的時間停在8點

鐘,而現(xiàn)在的正確時間為3點整,要校準時間,可以采用兩種方法:

(1)將時針順時針方向正撥7小時:8+7=15=12+3=3(mod12)

(2)將時針逆時針方向倒撥5小時:8-5=3o

第三章62011-12-31

因為鐘表的一周為12個小時,12相當于鐘表的進位值,在數(shù)學中

稱為“?!?,記作(mod12)o上例中7和一5對鐘表而言,它們的作用

相同,即加7和減5是等價的,我們稱7是一5對模12的補碼??梢杂脭?shù)學

公式表示為:-5=+7(mod12)

從這個例子可以得到一個啟示,對于一個確定的模來說,某數(shù)減去

小于模的另一個數(shù),總可以用加上模與該數(shù)的絕對值之差來代替,即負

數(shù)用補碼表示,這樣可以將減法運算轉(zhuǎn)化為加法運算了。這樣,在計算

機中實現(xiàn)起來就比較方便了。

例如:9-6=9+(-6)=9+(12-6)=9+6=3(mod12)

65-25=65+(-25)=65+(100-25)=65+75=40(mod100)

在定點小數(shù)機器中的數(shù)最大不超過1,也就是負的小數(shù)對“產(chǎn)的補

碼是等價的。但實際上,負數(shù)的符號位還有一個“1”,要把它看成的數(shù)

的一部分,所以要對2求補碼,即以2為模。

第三章72011-12-31

1.定點小數(shù)的補碼形式

若定點小數(shù)為±0.X]X2…Xn,它的原碼形式為Xs.xp(2…Xn,其中表

示符號位,則補碼表示的定義為:

X0<X<1

(mod2)

2+X=2—|X|-1<X<0

式中[X]補為機器數(shù),X為真值。

例如,X=+0.0101,則[X]補=0.0101

x=-o.0101,則[X]補=10+X=10.0000-0.0101=1.1011

一般情況下,對于正數(shù)X=+0.X]X2…Xn,則有

補=

[X]0X^2,..xn

對于負數(shù)X=—0.X/2…Xn,則有

[X]補=10.00???0—O.XiX2???Xn(mod2)

注意,0的補碼表示只有一種形式,即[+0]補二[一0]補=0.0000。

第三章82011-12-31

2.定點整數(shù)的補碼形式

若定點整數(shù)為±XR2…Xn,它的補碼形式為Xs,乂止2…Xn,其中Xs表

示符號位,則補碼表示的定義為:

X0<X<2n

(mod2/z+1)

2n+1+X=2n+1-|^|-2n<X<0

式中:X表示真值,n為整數(shù)的位數(shù)。

例如,X=+0101,則[X]補=00101

X=-0101,則[X]補=2n+1+X=25+(—0101)=25-0101=100000-

0101=1,1011

采用補碼表示法進行減法運算就比原碼方便多了,因為不論是正數(shù)

還是負數(shù),機器總是做加法,減法運算可轉(zhuǎn)換成加法運算。但根據(jù)補碼

的定義,求負數(shù)的補碼要從2減去|X|。為了用加法代替減法,結(jié)果還要

在求補碼時做一次減法,這顯然是不方便的。下面介紹的反碼表示法可

以解決負數(shù)的求補問題。

第三章92011-12-31

3.1.4反碼表示法

所謂反碼,就是二進制數(shù)的各位數(shù)碼由o變?yōu)?,由1變?yōu)?。也就是

說,若Xj=l,則反碼七二0;若X/0,則反碼Xj=l。數(shù)值上面的橫線表示反

碼的意思。反碼表示法與補碼表示法有相似之處,正數(shù)的反碼就等于真

值,負數(shù)的反碼是把其原碼除符號位以外的各位按位取反。

在計算機中用觸發(fā)器寄存數(shù)碼,若觸發(fā)器Q端輸出表示原碼,則其端

輸出就是反碼。由此可見,反碼是容易得到的。

1.定點小數(shù)的反碼形式

對定點小數(shù),反碼表示的定義為:

0<x<1

-2-n)+X-1<X<0

其中n代表數(shù)的位數(shù)。

第三章102011-12-31

下面我們來證明第二個式子。SX=-0X1X2...Xn,則有[X]反O現(xiàn)在

將X的絕對值|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

一般情況下,對于正X=+0.X/2…Xn,則有

[X]反二0印2…Xn

對于負數(shù)X=-0力也…Xn,則有

1.X1X2…Xn

對于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

我們比較反碼與補碼的公式

[X]反=(2-2-n)+X

[X]補=2+X

可以得到

兇補=[X]反+2-n

由這個公式可知,求一個負數(shù)的補碼,其方法是符號位為1,其余各位0

變1,1變0,然后在最末位(2-n)上加1。

第三章122011-12-31

2.定點整數(shù)的反碼形式

對定點整數(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.比較

三種碼制既有共同點,又有各自不同的性質(zhì),主要區(qū)別有以下幾點:

(1)對于正數(shù),它們都等于真值本身,而對于負數(shù)各自有不同的表示。

(2)最高位都表示符號位,補碼和反碼的符號位可作為數(shù)值的一部分看

待,和數(shù)值位一起參加運算;但原碼的符號位不允許和數(shù)值位同等看待,

必須分開處理。

(3)對于真值0,原碼和反碼各有兩種不同的表示形式,而補碼只有唯

一的一種表示形式。

(4)原碼、反碼表示的正、負數(shù)范圍相對零來說是對稱的;但補碼負數(shù)

表示范圍較正數(shù)表示范圍大,能多表示一個絕對值最大的數(shù),其值等于一

2-n(定點整數(shù))或一1(定點小數(shù))。

第三章142011-12-31

表3-1給出了以4位二進制數(shù)為例,表示三種不同碼制時的十進制真值。

表3-1三種不同碼制時的十進制真值

二進制數(shù)原碼補碼反碼

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與補碼或反碼之間的轉(zhuǎn)換通常是通過原碼實

現(xiàn)的,也可以直接完成真值與補碼或反碼之間的轉(zhuǎn)化。

若已知機器的字長,則機器數(shù)的位數(shù)應(yīng)補夠相應(yīng)的位數(shù),例如機器

字長為8位則:

X=1011[X]原=00001011[X]補=00001011[X]反=00001011

X=-1011[X]B=10001011[x]補二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]補

符號位不變

當Xs=o時數(shù)值位不變

當Xs=l日寸數(shù)值位變反+1

符號+/-變成0/1

[X]真值

數(shù)值位不變

符號位不變

當Xs=0口寸數(shù)值位不變

當Xs=l時數(shù)值位變反

[X]反

圖3-1三種不同碼制以及真值之間的轉(zhuǎn)換關(guān)系

第三章172011-12-31

3.2數(shù)的定點表示與浮點表示

在計算機中,小數(shù)點不用專門的器件表示,而是按約定的方式標出。

根據(jù)小數(shù)點的位置是否固定,在計算機中有兩種數(shù)據(jù)格式:定點表示和

'4學點表示o

3.2.1定點表示法

定點數(shù)是指小數(shù)點固定在某個位置上的數(shù)值。通常有小數(shù)和整數(shù)兩

種表示形式。

1.定點小數(shù)

小數(shù)點的位置固定在最高有效數(shù)位之前、符號位之后時,機器內(nèi)的

數(shù)稱為純小數(shù)。記作Xs.X】X2…X。,其中表示符號位,這個數(shù)是一個純

小數(shù),如圖3-2所示。定點小數(shù)的小數(shù)點位置是隱含約定的,小數(shù)點并不

需要真正占據(jù)一個二進制位。

第三章182011-12-31

當Xs=O、X.l、Xz=l、…、x『l時,X為最大正數(shù),即X最大正數(shù)=(l-2n)

當X§=0、X]=0、…、Xn_j=0>X01時,X為最小正數(shù),即X最小正數(shù)=2華

當Xs=l時,表示X為負數(shù),此時情況比較復雜,因為在計算機中帶符號

的數(shù)可以用補碼表示,也可以用原碼表示。如前所述,原碼與補碼所表示

的絕對值最大的負數(shù)是不同的,所以原碼和補碼的表示范圍有一些差別。

設(shè)機器字長有n位,貝I」:

原碼定點小數(shù)表示位的范圍為:一(1—2-n)?(1—2-n)。

補碼定點小數(shù)表示位的范圍為:一1?(1—2-n)o

圖3-2定點小數(shù)格式

第三章192011-12-31

2.定點整數(shù)

小數(shù)點的位置隱含固定在最低有效數(shù)位之后時,機器內(nèi)的數(shù)稱為純

整數(shù)。記作XsX]X2…Xn,這是一個純整數(shù),如圖3-3所示。

圖3-3定點整數(shù)格式

n

原碼定點整數(shù)表示位的范圍為:一(2n—1)?(2—1)O

11n

補碼定點整數(shù)表示位的范圍為:-2?(2—1)o

X最小正數(shù)二1

第三章202011-12-31

在定點表示法中,參加運算的數(shù)以及運算的結(jié)果都必須保證在該

定點數(shù)所能表示的數(shù)值范圍內(nèi)。如遇到絕對值小于最小正數(shù)的數(shù),被

當作機器0處理,稱為“下溢”;而大于最大正數(shù)和小于絕對值最大的

負數(shù)的數(shù),統(tǒng)稱為“溢出”。這時計算機將暫時中斷運算操作,去進

行溢出處理。

只能處理定點數(shù)的計算機稱為定點計算機。由于小數(shù)點的位置固

定不變,因此當機器處理的數(shù)不是純小數(shù)或純整數(shù)時,必須設(shè)定一個

比例因子,把原始的數(shù)縮小成定點小數(shù)或擴大成定點整數(shù)后再進行處

理,所得到的運算結(jié)果還必須根據(jù)比例因子還原成實際的數(shù)值。選擇

合適的比例因子非常重要,必須保證參加運算的初始數(shù)據(jù)、中間結(jié)果

和最后結(jié)果都在定點數(shù)的表示范圍之內(nèi),否則將會產(chǎn)生“溢出”。

第三章212011-12-31

322浮點表示法

i.浮點數(shù)的表示形式

使用定點表示法能表示以o為中心的一定范圍的正、負的整數(shù)或小數(shù)。

實際上計算機中處理的數(shù)不一定是純小數(shù)或純整數(shù),而且有些數(shù)據(jù)的數(shù)

值范圍相差很大,它們都不能直接用定點數(shù)表示,但均可用浮點數(shù)表示。

浮點數(shù)即小數(shù)點的位置可以浮動的數(shù),如

325.78=3.2578X102=3257.8XIO-1=0.32578X103

顯然,這里小數(shù)點的位置是變化的,但因為分別乘上了不同的10的

方幕,因此值不變。通常浮點數(shù)可表示成

N=MXrE

式中M為尾數(shù)(可正可負),E為階碼(可正可負),r是基數(shù)(或基

值)。在大多數(shù)計算機中,尾數(shù)為純小數(shù),常用原碼或補碼表示;階碼

為定點整數(shù),常用補碼表示;基數(shù)可取2、4、6、8、16等,通常廠2。

第三章222011-12-31

浮點數(shù)在機器中的形式如圖3-4所示。采用這種數(shù)據(jù)格式的機器稱

為浮點機。浮點數(shù)的基數(shù)是隱含的,在整個機器數(shù)中不出現(xiàn)。階碼的符

號位為es,階碼的大小反映了在數(shù)N中小數(shù)點的實際位置;尾數(shù)的符號位

為叫,它也是整個浮點數(shù)的符號位,表示了該浮點數(shù)的正、負。

可見,浮點數(shù)有階碼和尾數(shù)兩部分組成。浮點數(shù)的表示范圍主要由

階碼決定,有效數(shù)字的精度主要由尾數(shù)就決定。

1位<k位>1位<n位

m

0

階碼E尾數(shù)M

圖3?4浮點數(shù)的一般格式

第三章232011-12-31

2.浮點數(shù)的表示范圍

設(shè)某浮點數(shù)的格式如圖3-4所示,k和n分別表示階碼和尾數(shù)的位數(shù)

(不包括符號位),尾數(shù)和階碼均用補碼表示。

當es=O,ms=0,階碼和尾數(shù)的數(shù)值位各位都為1(即階碼和尾數(shù)都為

最大正數(shù))時,該浮點數(shù)為最大正數(shù):

X最大正數(shù)=(1-2?2

當e§=l,ms=0,尾數(shù)的最低位irin=l,其余各位為0(即階碼為絕對

值最大的負數(shù),尾數(shù)為最小正數(shù))時,該浮點數(shù)為最小正數(shù):

ck

X最小正數(shù)=2、2-2

當es=0,階碼的數(shù)值位全為1;ms=l,尾數(shù)的數(shù)值位全為0(即階碼

為絕對值最大的正數(shù),尾數(shù)為絕對值最大的負數(shù))時,該浮點數(shù)為絕對

值最大負數(shù):

V—_]*?2T

八絕對值最大的負數(shù)一n

第三章242011-12-31

3.浮點數(shù)的規(guī)格化

為了提高浮點數(shù)的精度,必須充分利用尾數(shù)的有效位數(shù),通常采取

浮點數(shù)規(guī)格化形式,即規(guī)定尾數(shù)的最高位數(shù)必須是一個有效數(shù)值。如果

不是規(guī)格化數(shù),就要通過修改階碼并同時左右移尾數(shù)的方法,使其變成

規(guī)格化數(shù)。將非規(guī)格化數(shù)轉(zhuǎn)換成規(guī)格化數(shù)的過程叫做規(guī)格化。對于基數(shù)

不同的浮點數(shù),因其規(guī)格化數(shù)的形式不同規(guī)格化過程也不同。

一個浮點數(shù)的表示形式不是唯一的。例如二進制數(shù)0.0001011可表

示為0.001011X2T、0.01011X2-2>0.1011X2—3…,而其中只有

0.10HX2-3是規(guī)格化數(shù)。

在尾數(shù)用原碼表示時,規(guī)格化浮點數(shù)的尾數(shù)的最高數(shù)位總等于1。

第三章252011-12-31

3.2.3浮點數(shù)階碼的移碼表示法

浮點數(shù)的階碼是帶符號的定點整數(shù),因此它可以用前面介紹的任何

一種機器數(shù)的表示方法來表示。但在大多數(shù)計算機中,多采用補碼表示

法或另外一種編碼方法——移碼表示法。

設(shè)定點整數(shù)的移碼形式為X0X]X2…Xn,字長為n+1位,則移碼的定義為

[X]移=2n+X-2n<X<2n

式中:[X]移表示移碼,X為真值。

根據(jù)定義可知,移碼就是真值X加一個常數(shù)2%相當于X在數(shù)軸上向

正方向平移了2n個單位,由此而得“移碼”之稱。移碼也可稱為增碼或

偏碼,常數(shù)2n稱為偏置量或偏置值。

將移碼的定義和補碼的定義相比較,可以找出移碼和補碼之間的關(guān)系:

X0<X<2n

因為

2n+,+X=2n+,-IXI-2"<X<0

第三章262011-12-31

表3-2給出了移碼、補碼和真值之間的關(guān)系。

表3?2移碼、補碼和真值之間的關(guān)系

真值X(十進制)真值X(二進制)[X]補[X]移

-128-100000001000000000000000

-127-11111111000000100000001

????????????

-1-00000011111111101111111

000000000000000010000000

100000010000000110000001

????????????

12711111110111111111111111

第三章272011-12-31

從表3-2中,可看出移碼具有以下特點:

(1)在移碼中,最高位為“0”表示負數(shù),最高位為“1”表示正數(shù),這

與原碼、補碼、反碼的符號位取值相反;

(2)移碼全為0時,它所對應(yīng)的真值最??;全為1時所對應(yīng)的真值最大。

因此移碼的大小直觀地反映了真值得大小,有助于兩個浮點數(shù)進行階碼

的大小比較;

(3)真值0在移碼中的表示形式也是唯一的,即[+0]補二[-0]補

=100...0;

(4)移碼把真值映射到一個正數(shù)域,所以可將移碼視為無符號數(shù),直

接按無符號數(shù)規(guī)則比較大??;

(5)同一數(shù)值的移碼和補碼除最高位相反外,其他各位相同。

(6)移碼的偏置量并不唯一,根據(jù)所要表示的移碼值范圍來選擇不同

的偏置量,需要注意的是IEEE754的標準中8位二進制的偏移量的取值為

127。

第三章282011-12-31

3.2.4實用浮點數(shù)舉例

在現(xiàn)代計算機中,浮點數(shù)一般采用國際標準IEEE754,這種標準的

形式如圖3-5所不。

ms階碼(含階符)尾數(shù)

數(shù)符小數(shù)點位置

圖3-5IEEE754標準的浮點數(shù)形式

第三章292011-12-31

按照IEEE754標準,常用的浮點數(shù)有三種,它們具體的格式見表3-3。

表3?3IEEE754標準中的三種浮點數(shù)

類型數(shù)符階碼尾數(shù)總位數(shù)偏置值

r^3

短浮點數(shù)18327FH

長浮點數(shù)11152643FFH

臨時浮點數(shù)11564r^o3FFFH

下面以32位的短浮點數(shù)為例,討論浮點代碼與真值之間的關(guān)系。最高

位為數(shù)符位;其后是8位階碼,以2為底,階碼的偏置值為127;其余23位

是尾數(shù)。為了使尾數(shù)部分能表示多一位的有效值,IEEE754標準采用隱含

尾數(shù)最高數(shù)位1的方法(即這一位1不表示出來),因此尾數(shù)實際上是24位。

需要注意的是,隱含的1是一位整數(shù)(即位權(quán)為2。)。在浮點格式中表示

出來的23位尾數(shù)是純小數(shù),并用原碼表示。

第三章302011-12-31

例3-3:將(56.25)I。轉(zhuǎn)換成短浮點數(shù)。

解:(1)把十進制數(shù)轉(zhuǎn)換成二進制數(shù)

(56.25)10二(111000.01)2

(2)規(guī)格化二進制數(shù)

111000.01=1.1100001X25

(3)算出移碼(階碼真值+偏置值)

101+01111111-10000100

(4)短浮點數(shù)格式存儲該數(shù)

因為

符號位二0

階碼二10000100

尾數(shù)二11000010000000000000000

所以短浮點數(shù)代碼為:0;10000100;11000010000000000000000

表示為十六進制的代碼為:42610000Ho

第三章312011-12-31

例3-4:把短浮點數(shù)C1C90000H轉(zhuǎn)換成十進制數(shù)。

(1)把十六進制數(shù)轉(zhuǎn)換成二進制數(shù),并分離出符號位、階碼和尾數(shù)

因為C1C90000H二11000001110010010000000000000000

所以,符號位二1

階碼二10000011

尾數(shù)二10010010000000000000000

(2)計算出階碼真值(移碼一偏置值)

10000011-01111111=100

(3)以規(guī)格化二進制數(shù)形式寫出此數(shù)

1.1001001X24

(4)寫成非規(guī)格化二進制數(shù)形式

11001.001

(5)轉(zhuǎn)換成十進制數(shù),并加上符號位

(11001.001)2二(25.125)10

所以,該浮點數(shù)為-25.125

第三章322011-12-31

3.3數(shù)值運算

3.3.1定點四則運算

定點四則運算包括加、減、乘、除運算。

1.補碼加法運算

上一節(jié)我們介紹了數(shù)的補碼表示法,負數(shù)用補碼表示后,就可以和

正數(shù)一樣來處理。這樣,運算器里只需要一個加法器就可以了,不必為

了負數(shù)的加法運算,再配一個加法器。

補碼加法的公式是:

[X]補+[Y]補=[X+Y]補(mod2)

上述公式表明,在模2意義下,任意兩個數(shù)的補碼之和等于該兩個

數(shù)之和的補碼。這是補碼加法的理論基礎(chǔ),其結(jié)論也適用定點整數(shù)。

補碼加法有以下特點:一是符號位要作為數(shù)的一部分一起參加運算;

二是要在模2的意義下相加,即超過2的進位要舍去。

第三章332011-12-31

2.補碼減法運算

負數(shù)的加法要利用補碼化為加法來做,減法運算當然也要設(shè)法化為

加法來做。之所以使用這種方法而不直接使用減法,是因為它可以和常

規(guī)的加法運算使用同一個加法器電路,從而簡化了計算機的設(shè)計。

補碼減法運算的公式為:

[X—Y]補=[X]補一[Y]補=[X]補+[—Y]補(mod2)

因此,若機器數(shù)采用補碼,當求X—Y時,只需先求LY]補(稱[—

Y]補為“變補”后的減數(shù)),就可以按照補碼加法規(guī)則進行運算。而[—

Y]補由[Y]補連同符號位在內(nèi),每位取反,末位加1而得。

第三章342011-12-31

3.溢出判斷

在定點小數(shù)機器中,數(shù)的表示范圍為|X|VI。在運算過程中如出現(xiàn)

大于1的現(xiàn)象,稱為“溢出”。在定點中,正常情況下溢出是不允許的。

兩個正數(shù)相加,結(jié)果大于機器所能表示的最大正數(shù),成為正溢。而

兩個負數(shù)相加,結(jié)果小于機器所能表示的最小負數(shù),成為負溢。如圖3-

6所示,對定點正數(shù)而言,也同樣存在正溢、負溢問題。

負溢<一可表示的數(shù)一》正溢

-10+1

圖3-6定點小數(shù)的溢出

第三章352011-12-31

為了保證計算的正確性,我們必須要對溢出進行檢測。判斷“溢出”

是否發(fā)生,可采用兩種檢測方法。第一種方法是采用雙符號位法,這稱

為“變形補碼”或“模4補碼”,從而使模2補碼所能表示的數(shù)的范圍擴

大了一倍。采用變形補碼后,任何小于1的正數(shù),兩位符號位都是“0”;

任何大于一的1負數(shù),兩個符號位都是“1”,兩個數(shù)相加后,其結(jié)果的

符號出現(xiàn)“01”或“10”兩個組合時,表示發(fā)生溢出。這是因為兩個絕對

值小于1的數(shù)相加,其結(jié)果不會大于或等于2,而最高符號位永遠表示結(jié)

果的正確符號。

第三章362011-12-31

我們可以得出如下結(jié)論:

(1)當以模4補碼運算,運算結(jié)果的兩個符號位相異時,表示溢出;

相同時,表示未溢出。所以溢出邏輯表達式為V二SfRf2,其中$門和S’2分

別表示為最高符號位和第二符號位。此邏輯表達式可用異或門實現(xiàn)。

(2)模4補碼相加的結(jié)果,不論是否溢出,最高符號位始終表示正確

的符號。

(3)第二種溢出檢測的方法是采用單符號位法。從例9和例10中可看

出,當最高有效位產(chǎn)生進位而符號位無進位時,產(chǎn)生正溢;當最高有效

位無進位而符號位有進位時,產(chǎn)生負溢。所以溢出邏輯表示式為V=CfC0,

其中Cf表示符號位產(chǎn)生的進位,C。表示最高有效位產(chǎn)生的進位。此邏輯

表達式也可用異或門實現(xiàn)。

在定點機中,當運算結(jié)果發(fā)生溢出時,機器通過邏輯電路自動檢測

出這種益處,并進行中斷處理。

第三章372011-12-31

4.乘法運算

與加法和減法相比,無論是用硬件還是用軟件來完成。乘法都是一

個復雜的操作。各種各樣的算法已用于各類計算機中。我們先介紹兩個

無符號整數(shù)相乘的過程,然后再介紹實現(xiàn)兩個補碼表示數(shù)的乘法的最普

遍的技術(shù)。

(1)無符號整數(shù)乘法

由圖3?7所示的手工乘法過程,可得到如下幾點重要結(jié)論:

1011被乘數(shù)11

X1101乘數(shù)13

1011

0000

1011

1011

10001111

圖3-7無符號二進制乘法

第三章382011-12-31

1)乘法涉及到部分積的生成,乘數(shù)的每一位對應(yīng)一個部分積。然后,

部分積相加得到最后的乘積。

2)部分積是容易確定的。當乘數(shù)的位是0時,其部分積也是0;當乘

數(shù)的位是1時,其部分積是被乘數(shù)。

3)部分積通過求和而得到最后乘積。為此,后面的部分積總要比它

前面的部分積左移一個位置。

4)兩個n位二進制整數(shù)的乘法導致其積的長度為2n位。

與手工演算相比,計算機能做幾件事使操作更有效。首先,可以邊產(chǎn)

生部分積邊做加法,而不是等到最后再相加。這就取消了存儲所有部分

積的需求;只需要少數(shù)幾個寄存器。其次,我們能節(jié)省某些部分積的生

成時間,對于乘數(shù)的每個1,需要加和移位兩個操作;但對于每個0,則

只需移位操作。

第三章392011-12-31

圖3-8表示了一種采用此方式的實現(xiàn)方案。

乘數(shù)和被乘數(shù)分別裝入兩個寄存器(Q和M)。還需要第三個寄存

器A,初始設(shè)置為0。還需要一個1位寄存器C,初始值為0,用于保存加

法可能產(chǎn)生的進位。

被乘數(shù)

乘數(shù)

圖3-8無符號二進制乘法實現(xiàn)硬件

第三章402011-12-31

乘法器的操作如下???/p>

制邏輯每次讀乘數(shù)的一位。

若Qo是1,則被乘數(shù)與A寄存

器相加并將結(jié)果存于A寄存

器。然后,C、A和Q各寄存

器的所有位向右移一位,于

是C位進入A。/,進入Qz,

而Qo丟失。若Qo是0,則只

需進位,無需完成加法。對

原始的乘數(shù)每一位重復上述

過程。產(chǎn)生的2n位積存于A

和Q寄存器。這種操作的流積在A,Q中

程圖如圖3-9所示。

圖3-9無符號二進制乘法流程圖

第三章412011-12-31

(2)補碼乘法

在計算機中帶符號數(shù)一般都用補碼表示,補碼的加減法非常簡單,

在以加減運算為主的通用機中,操作數(shù)都用補碼表示,所以這類計算機

在做乘法時也使用補碼。

最常用的補碼乘法算法是Booth算法,又稱比較法。

設(shè)被乘數(shù)[X]補=Xs.XRz…X/乘數(shù)[Y]補=Ys.YM…Yn。在乘數(shù)的最低位

置后增加一位附加位Ya,它初值為3增加附加位不會影響運算結(jié)果。

每次運算取決于乘數(shù)相鄰兩位Yj+1的值,把它們稱為乘法的判斷

位。這種運算是根據(jù)乘數(shù)相鄰兩位的比較結(jié)果(Yi+1—Yj)來確定運算操

作,因此稱為比較法。

第三章422011-12-31

Booth算法規(guī)則如下:

1)參加運算的數(shù)用補碼表示;

2)符號位參加運算;

3)由于每求一次部分積要右移一位,所以乘數(shù)的最低兩位Yn、Yn+1的

值決定了每次執(zhí)行的操作,如表3-4所示;

4)移位按補碼右移規(guī)則進行,右移前:XX]X2…X,右移后:XX

X]???Xn_2Xn_p

5)共需要進行n+1次累加,n次移位。

表3-4Booth乘法運算操作

判斷位丫口、Y/]I

0~0原部分積右移一位

。1原部分積加[X]補后右移一位

10原部分積加[—x]補后右移一位

11原部分積右移一位

第三章432011-12-31

圖3-10給出了Booth算法的框圖。被乘數(shù)和乘數(shù)分別放入B和C寄存

器內(nèi)。乘法的結(jié)果將出現(xiàn)在A和C寄存器中。A和附加位CM初始化為0。

運算過程中,控制邏輯每次掃描C寄存器中的最低兩位CnG+i。若兩位

相同(11或00),則A、C寄存器的所有位向右移一位。若兩位不同,當

時,則A寄存器的內(nèi)容加B寄存器的內(nèi)容(即被乘數(shù));當

CnCn+i=l。時,A寄存器的內(nèi)容減去B寄存器的內(nèi)容被乘數(shù)(即加上B寄

存器中內(nèi)容的反),加減之后再右移。無論哪種情況,右移是這樣進行

的:A的最左位,即A一位,不僅要移入A。?,而且還要保留在A-中。

這要求保留A和C中的符號。這種移位方式稱為算術(shù)移位(Arithmetic

Shift),因為它保留了符號位。

第三章442011-12-31

圖3-10補碼乘法的Booth算法

第三章452011-12-31

5.除法運算

除法要比乘法更復雜,但也是基于同樣的通用原則。如上所述,算法

的基礎(chǔ)是紙和筆的演算方法,而且操作涉及到重復的移位和加減法。

00001101商

除數(shù)1011)10010011被除數(shù)

1011

部分余001110

1011

001111

________1011

100余數(shù)

圖3-11無符號二進制整數(shù)除法

第三章462011-12-31

圖3-11表示的是一個無符號二進制整數(shù)長除的例子。首先,從左到右

檢查被除數(shù)的位,直到被檢查的位所表示的數(shù)大于或等于除數(shù);這被稱

為除數(shù)能去“除”此數(shù)。直到這個事件出現(xiàn)之前,一串0從左到右放入

商中,。當事件出現(xiàn)時,一個1放入商并且由此部分被除數(shù)中減去除數(shù)。

結(jié)果被稱為部分余(PartialRemainder),由此開始除法呈現(xiàn)一種循

環(huán)樣式。在每一循環(huán)中,被除數(shù)的其他位續(xù)加到部分余上,直到結(jié)果大

于或等于除數(shù)。同前,由這個數(shù)減去除數(shù)并產(chǎn)生新的部分余。此過程繼

續(xù)下去,直到被除數(shù)的所有位都被用完。

事實上,機器的運算過程和人畢竟不同,人會心算,一看就知道夠不

夠減。但機器卻不會心算,必須先做減法,若余數(shù)為正,才知道夠減;

若余數(shù)為負,才知道不夠減。不夠減時必須恢復原來的余數(shù),以便再繼

續(xù)往下運算,這種方法稱為恢復余數(shù)法。

第三章472011-12-31

要恢復原來的余數(shù),只要當前的余數(shù)加上除數(shù)即可。但由于要恢復余

數(shù),使除法進行過程的步數(shù)不固定,因此控制比較復雜。實際中常用不

恢復余數(shù)法,又稱加減交替法。其特點是運算過程中如出現(xiàn)不夠減,則

不必恢復余數(shù),根據(jù)余數(shù)符號,可以繼續(xù)往下運算,因此步數(shù)固定,控

制簡單。

加減交替法的規(guī)則是:當余數(shù)為正時,商“1”,余數(shù)左移一位,減除

數(shù);當余數(shù)為負時,商“0”,余數(shù)左移一位,加除數(shù)。

第三章482011-12-31

3.3.2浮點四則運算

1.浮點加法、減法運算

設(shè)有兩個浮點數(shù)X和Y,它們分別為

X=2LxX

Y=。Yx2EY

其中Ex和Ey分別為數(shù)X和Y的階碼,Mx和%為X和Y的尾數(shù)。

兩個浮點數(shù)進行加法和減法的運算規(guī)則是:

EX-EYEY

Z=X±Y=(MxX2±MY)X2EX<EY

由于浮點數(shù)尾數(shù)的小數(shù)點均固定在第一數(shù)值位前,所以尾數(shù)的加減運算

規(guī)則與定點數(shù)完全相同。但由于其階碼的大小有直接反映尾數(shù)有效值的

小數(shù)點位置,因此當浮點數(shù)階碼不等時,因兩尾數(shù)小數(shù)點的實際位置不

一樣,尾數(shù)部分無法直接進行加減運算,因此必須先進行“對階”,

使兩數(shù)的小數(shù)點位置對齊。

第三章492011-12-31

完成浮點數(shù)加減法運算的操作過程大體分為四個基本步驟:

(1)0操作數(shù)檢查;

(2)比較階碼并完成對階;

(3)尾數(shù)進行加或減運算;

⑷規(guī)格化結(jié)果并進行舍入處理。

圖3?12所示為浮點數(shù)加減運算的操作流程圖。

第三章502011-12-31

圖3-12浮點加減運算的操作流程

第三章512011-12-31

第一步為0操作數(shù)檢查,如果判知兩個操作數(shù)X或Y中有一個數(shù)為0,那

么另一個數(shù)即為運算結(jié)果,而沒有必要再進行后續(xù)的一系列操作,以節(jié)

省運算時間。

第二步是使兩個操作數(shù)的指數(shù)相同。兩個浮點數(shù)進行加減,首先要

看兩個數(shù)的階碼是否相同,即小數(shù)點位置是否對齊。若兩個數(shù)階碼相同,

表示小數(shù)點是對齊的,就可以進行尾數(shù)的加減運算。反之,若兩個數(shù)階

碼不同,表示小數(shù)點位置沒有對齊,此時必須使兩個數(shù)階碼相同,這個

過程叫做對階。

第三步是尾數(shù)求和運算,包括它們的符號。不論是加法還是減法,都

按加法進行操作,其方法與定點加減運算完全相同。

最后一步是規(guī)格化結(jié)果。若尾數(shù)部分得到的結(jié)果不是規(guī)格化數(shù),必須把

它變成規(guī)格化數(shù)。對于雙符號來說,規(guī)格化數(shù)的形式是001義…X或

110X...Xo

第三章522011-12-31

規(guī)格化處理的規(guī)則如下:

1)結(jié)果尾數(shù)的兩個符號位值不同(01或10),這就表明尾數(shù)運算結(jié)果

溢出,應(yīng)進行右規(guī)格化處理,即將結(jié)果尾數(shù)向右移一位,并將階碼值加

lo

2)若結(jié)果尾數(shù)運算不溢出,但最高數(shù)位值與符號位的值相同,這就表

明不符合規(guī)格化規(guī)則,應(yīng)進行左規(guī)格化處理,這時應(yīng)將結(jié)果尾數(shù)重復左

移,每移一位階碼減1,知道出現(xiàn)最高數(shù)值位與符號位的值不同為止。

在對階或向右規(guī)格化時,尾數(shù)要向右移位。這樣被移位的尾數(shù)的低位

部分就會被丟掉,從而造成一定的誤差,因此要進行舍入處理。簡單的

舍入如處理方法有兩種:一種是“0舍1入”法,即如果右移時被丟掉的

數(shù)位的最高位為0則舍去,為1則將尾數(shù)的末位加1。另一種方法是“恒

置1”法,即只要數(shù)位被移掉,就在尾數(shù)的末位恒置1。

第三章532011-12-31

在IEEE754標準中,舍入處理提供了四種可選方法:

?就近舍入:結(jié)果被舍入成最近的可表示的數(shù)。其實質(zhì)就是通常所說

的“四舍五入”。例如,尾數(shù)超出規(guī)定的23位的多余位數(shù)字是10010,

多于位的值超過規(guī)定的最低有效位值的一半,故最低有效位應(yīng)增1。若

多余的5位是01111,則簡單的截尾即可。對多余的5位10000這種特殊情

況:若最低有效位現(xiàn)在為0,則截尾;若最低有效位現(xiàn)為1,則向上進1

位使其變?yōu)?。

?朝+8舍入:結(jié)果向正無窮大方向取舍。對正數(shù)來說,只要多余位不

全為0,則向最低有效位進1;對負數(shù)來說,則是簡單的截尾。

?朝一8舍入:結(jié)果向負無窮大方向取舍。對正數(shù)來說,則是簡單的截

尾;對負數(shù)來說,只要多余位不全為0,則向最低有效位進1。

?朝0舍入:結(jié)果朝0取舍。即朝數(shù)軸原點方向舍入,就是簡單的截尾。

無論尾數(shù)是正數(shù)還是負數(shù),截位都使取值的絕對總值比原值的絕對值小。

這種方法容易導致誤差。

第三章542011-12-31

2.浮點乘法、除法運算

(1)浮點乘法、除法運算規(guī)則

設(shè)有兩個浮點數(shù)X和Y:

可見,乘積的尾數(shù)是相乘兩數(shù)的尾數(shù)之積,乘積的階碼是相乘兩數(shù)的

階碼之和。當然,這里也有規(guī)格化和舍入等步驟。

設(shè)有兩個浮點數(shù)X和Y:

第三章552011-12-31

(2)浮點乘法、除法運算步驟

浮點數(shù)的乘除運算大體可分為四步:第一步,0操作數(shù)檢查;第二步,

階碼加/減操作;

第三步,尾數(shù)乘/除操作;第四步,結(jié)果規(guī)格化及舍入處理。

圖3-13所示為浮點乘法的流程圖。無論哪個操作數(shù)為0,乘積即為0。

下一步是指數(shù)相加。若指數(shù)是移碼(偏移值指數(shù))形式,指數(shù)的和將會

有雙倍的偏置值,故應(yīng)從和中減去一個偏置值??赡軙霈F(xiàn)指數(shù)上溢或

下溢,此時應(yīng)結(jié)束算法并報告。

若積的指數(shù)在一個恰當?shù)姆秶鷥?nèi),則下一步應(yīng)是有效數(shù)相乘,包括它

們的符號一起考慮。有效數(shù)相乘與整數(shù)相乘的方法相同。積的長度將是

被乘數(shù)和乘數(shù)的長度的兩倍,多余的位將在舍入期間丟失掉。

得出乘積之后,下一步則是結(jié)果的規(guī)格化和舍入處理,同加、減法所做

的一樣。注意,規(guī)格化可能導致指數(shù)下溢出現(xiàn)。

第三章562011-12-31

圖3-13浮點乘法的流程圖

第三章572011-12-31

圖3-14所示為浮點除除法

法流程圖。第一步是測試

x=o?A階碼相減

0,若除數(shù)為0,或報告出

Y,V

加偏移

錯,或認為是一個無窮大Z

的數(shù),取決于具體的實現(xiàn)。

工A溢出報告

返回工酚碼溢出?

若被除數(shù)是0,則結(jié)果是0。K7

下一步是被除數(shù)的指數(shù)減爸碼下溢?>報告下溢

除數(shù)的指數(shù)。這個過程把V

\r

偏置值去掉了,所以必須尾數(shù)相除I返回

加上偏置值。然后對指數(shù)規(guī)格化

上溢或下溢進行測試。▼

舍入

V

返回

圖3/4浮點除法流程圖

第三章582011-12-31

3.4算術(shù)邏輯運算單元ALU

針對每一種算術(shù)運算,都必須有一個相應(yīng)的基本硬件配置,其核心部

分是加法器和寄存器。當需要完成邏輯運算時,勢必需要配置相應(yīng)的邏

輯電路,而ALU電路是既能完成算術(shù)運算又能完成邏輯運算的部件

3.4.1ALU電路

圖3-15是ALU框圖。圖中Aj和瑪為輸入變量;彩為控制信號,&的不同

取值可決定該電路做哪種邏輯運算;Fj是輸出函數(shù)。

圖3-15ALU框圖

第三章592011-12-31

為了實現(xiàn)算術(shù)/邏輯多功能運算,則必須對全加器(F

溫馨提示

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

最新文檔

評論

0/150

提交評論