計算機組成原理期末復習_第1頁
計算機組成原理期末復習_第2頁
計算機組成原理期末復習_第3頁
計算機組成原理期末復習_第4頁
計算機組成原理期末復習_第5頁
已閱讀5頁,還剩75頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

真值和機器數(shù)

?真值:符號(+/-)+尾數(shù)(絕對值)

(+5)10=(+101)2,(-7)10=(-111)2

?機器數(shù):將符號(+/-)數(shù)碼化,用最高位做符號位

S+數(shù)值

?數(shù)的符號在計算機中的表示:

原碼、反碼、補碼:0表示正數(shù),1表示負數(shù)

移碼:0表示負數(shù),1表示正數(shù)

1.原碼表示法

若定點小數(shù)的真值為X=±0.xlx2■■■xn,則原碼表示的定義是:

例如,X=+0.1001,則[X]原=0.1001

X=-0.1001,則[X]原=1.1001

對于0,原碼有“+0”、“一0”之分,故有兩種形式:

[+0]原=0.000...0[—0]原=1.000...0

若定點整數(shù)的真值為X=±xlx2…xn,則原碼表示的定義是:

采用原碼表示法簡單易懂,但它的缺點是運算復雜。

當兩數(shù)相加時.,如果是同號則數(shù)值相加;如果是異號,則要進行減法。而在

進行減法時還要比較絕對值的大小,然后大數(shù)減去小數(shù),最后還要給結(jié)果選擇符

號。

2.反碼表示法

所謂反碼,就是二進制的各位數(shù)碼0變?yōu)?,1變?yōu)?。在一些文獻中,這

種以2為基數(shù)的反碼又稱為1的補碼。

對于正數(shù)X=+0.xlx2…xn,則反碼表示為:[X]反=0.xlx2…xn

對于負數(shù)X=-0.xlx2…xn,則反碼表示為:[X]反=1.xlx2…xn

例如,X=+0.1001,則[X]反=0.1001

X=-0.1001,則[X]反=1.0110

若定點小數(shù)的真值為x=±0.xlx2…xn,則反碼表示的定義是:

對于0有[+0]反和[-0]反之分:[+0]反=0.000...0[―0]反=

1.111...1

若定點整數(shù)的真值為X=±xlx2…xn,則反碼表示的定義是:

3.補碼表示法

若定點小數(shù)的真值為X=±0.xlx2…xn,則補碼表示的定義是:

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

X=-0.1001,則[X]補=1.0111

[+0]補=[—0]補=0.000...0

[-1]補=1.000...0

若定點整數(shù)的真值為X=±xlx2…xn,則補碼表示的定義是:

對于負數(shù),補碼等于反碼的最低位加1:

[]補=以]反+2?—11)X為小數(shù)

2]補=0<]反+1X為整數(shù)

4.移碼表示法

若定點整數(shù)的真值為X=±xlx2…xn,則移碼表示的定義是:

例如,X=+1001,則[X]移=11001

X=-1001,則[X]移=00111

四種機器碼的比較(以n+1位定點正數(shù)為例):

1.原碼、反碼和補碼的符號位為0正1負,移碼為1正0負;

2.原碼和反碼的表示范圍為2~n>X>一2%,0的原碼和反碼都有兩個;

補碼和移碼的表示范圍為2~n>X2—2~n,0的補碼和移碼都只有一個;

3.正數(shù)的原碼、反碼和補碼相同,負數(shù)則不同;

4.移碼等二F補碼的符號位取反;移碼的大小關(guān)系與真值的大小關(guān)系相同。

真值原碼反碼補碼網(wǎng)

?70111011101111111

+60110011001101110

+50101010101011101

+40100010001001100

+30011001100111011

+20010001000101010

+10001000100011001

+00000000000001000

-010001111-

-11001111011110111

21010110111100110

1011110011010101

-41100101111000100

-51101101010110011

-61110100110100010

-71111100010010001

--10000000

數(shù)據(jù)格式

計算機中常用的數(shù)據(jù)表示格式有兩種,一是定點格式,二是浮點格式。定點

格式容許的數(shù)值范圍有限,但要求的處理硬件比較簡單;浮點格式容許的數(shù)值范

圍很大,但要求的處理硬件比較復雜。

1.定點數(shù)的表示方法

定點數(shù)是指小數(shù)點的位置固定不變。小數(shù)點的位置是事先約定的,不需要占

用一個二進制位來表示。通常將數(shù)據(jù)表示成純小數(shù)或純整數(shù)。

定點小數(shù):

小數(shù)點位于符號位和最高有效位之間。

n個零值位、

符號位-*[xsj_

i—小數(shù)點位置(隱含)

采用原碼表示時,所能表示的數(shù)的范圍是:0W|X|Wl—2?—n)。

定點正數(shù):

,小數(shù)點位于最高有效位之后。

n個零值位

符號位f國...

小數(shù)點位置(除含)一

采用原碼表示時,所能表示的數(shù)的范圍是:0WIXIW2An-l。

2.浮點數(shù)的表示方法

一個R進制的數(shù)N可以寫成:

N=MXR"E

其中M為尾數(shù),E為指數(shù),R為基數(shù)。在計算機中通常取R為2、8或16。

在機器中表示一個浮點數(shù)時,一要給出尾數(shù),用定點小數(shù)的原碼或補碼表示;

二要給出指數(shù),用整數(shù)的補碼或移碼表示,稱為階碼。

瑪石再…耳M.??J/.

I階符I-階碼——^數(shù)符|--------歐----------f

為了使浮點數(shù)的表示形式唯一,當尾數(shù)M不為0時,若尾數(shù)用原碼表示,規(guī)

定0.5W|M|V1,即尾數(shù)的二進制形式為0.1義X…X或1.IXX…X;若尾數(shù)

用補碼表示,規(guī)定0.5WMV1或一1WM<-0.5,即尾數(shù)的二進制形式為0.1

XX…X或1.0XX…X。這稱為浮點數(shù)的規(guī)格化表示。M=-0.5對于原碼表示

是規(guī)格化的,對于補碼表示則不是。P54的規(guī)格化

當一個浮點數(shù)的尾數(shù)M=0,不管階碼取何值,或者階碼比它能表示的最

小值還小時,不管尾數(shù)取何值,都把該浮點當零看待,稱為機器零。此時要求把

浮點數(shù)的階碼和尾數(shù)都清為零,保證零這個數(shù)表示的唯一性。

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

設階碼和尾數(shù)都用補碼表示,階碼共k+1位(含一位階符),尾數(shù)共n+1位(含

一位數(shù)符)。浮點數(shù)的表示范圍如下:

階碼尾數(shù)真值

最大IE故0,11…10.11—1(1-2?2必1

絕對值最大負數(shù)0,11-11.00—0(-1)x2j

--?

最小正數(shù)1,00-00.00—1(2")x2

規(guī)格化最小正數(shù)1,00-00.10—0(21)X2T*

(-2")x2-2*

絕對值最小負數(shù)1,00—01.11—1

規(guī)格化絕對值最小負數(shù)1,00—01.01—1_(2T+2?2孑

IEEE754標準

IEEE754是目前廣泛采用的浮點數(shù)編碼格式。

32^^點數(shù):

64位浮點數(shù):

32位浮點數(shù)中,S是浮點數(shù)的符號位,占1位,安排在最高位,0正1負。

符號位后面是階碼E,占8位。E的計算方法是將浮點數(shù)的指數(shù)真值加上一個固

定的偏移值127(這也叫移碼)。E的取值范圍是1—254,對應的指數(shù)真值為一

126?+127。E取255表示“無窮大”,E取0表示機器零。M是尾數(shù),占23

位,放在最低位,用原碼表示。尾數(shù)的真值為LM,即在M前面有一個隱藏的lo

這相當于將尾數(shù)規(guī)格化到1和2之間,而將整數(shù)部分的1隱藏不表。

一個32位浮點數(shù)X的真值可表示為:

X=(-1)ASX(l.M)X2EA(-127)

64位浮點數(shù)中,階碼E占11位,計算方法是將浮點數(shù)的指數(shù)真值加上一個

固定的偏移值1023。E的取值范圍是1—2046,對應的指數(shù)真值為一1022-+

1023。E取2047表示“無窮大”,E取0表示機器零。尾數(shù)M占52位,有一

個隱藏位lo

一個64位浮點數(shù)X的真值可表示為:

X=(-1)ASX(l.M)X2EA(-1023)

/EEE754標準中的一些特殊值(以32位為例):

符號階碼尾數(shù)值

正零:000+0

負零:100-0

正無窮大:02550+8

負無窮大:12550------CX3

非數(shù):0或1255W0NaN

注意:

本書中提及的規(guī)格化有兩種,移碼也有兩種。IEEE754標準指的移碼以及規(guī)格

化與浮點數(shù)表示不同。

移碼規(guī)格化

IEEE75府準真值加127尾數(shù)的真值為1.M

并將整數(shù)部分的1隱藏不表

真畫112n原碼:1.1XXD^0.1XX

浮點數(shù)與補碼區(qū)別符號位補碼:1.0xxog0.1xx

?將-27/64用IEEE754表示

--27/64=-0.011011

?規(guī)格化:(必須是1.M的形式)

0.011011=1.1011X2-2

?階碼為一2E=e+127=01111101

?1011111011011000..000

牛刀小試:

設某機器用32位表示一個實數(shù),階碼部分8位(含1位階符),用定點整

數(shù)補碼表示;尾數(shù)部分24位(含數(shù)符1位),用規(guī)格化定點小數(shù)補碼表示,基

數(shù)為2。

I階符]—階碼——I數(shù)符{--------劇-----------H

1)求X=256.5的浮點表示格式(16進制格式表示)

2)求Y=-256.5的浮點表示格式(16進制格式表示)

3)將十進制數(shù)178.125表示成IEEE754單精度浮點數(shù)。

4)將下面IEEE754的單精度浮點數(shù)表示成十進制真值是多少?

1011,1111,0101,1000,0000,0000,0000,0000

解:1)X=(256.5)10=+(100000000.1)2=+(0.1000000001X2-9)2

8位階碼為:(+9)補=00001001

24位尾數(shù)為:(+0.1000000001)補=0.10000000010000000000000

所求256.5的浮點表示格式為:00001001010000000010000000000000

用16進制表示此結(jié)果則為:(09402000)16

2)Y=-(256.5)10=-(100000000.l)2=-0.1000000001X2*9

8位階碼為:(+9)補=00001001

24位尾數(shù)為:(-0.1000000001)#=1.01111111110000000000000

所求-256.5的浮點表示格式為:00001001101111111110000000000000

用16進制表示此結(jié)果則為:(09BFE000)16

3)178.125=10110010.001B=l.0110010001X2-7

指數(shù)E=7+127=134=10000110B

127是單精度浮點數(shù)應加的指數(shù)偏移量,其完整的浮點數(shù)形式為:

01000011001100100010000000000000=43322000H

4)1011,1111,0101,1000,0000,0000,0000,0000

數(shù)符:S=T負號)

階碼:E=(01111110)2-127=126-127=-1

尾數(shù):D=(l.1011)2

X=-l.1011X2*(-1)=-(0.11011)2=-0.84375

?設某機器用32位表示一個實數(shù),階碼部分8位(含1位階符),用定點整數(shù)

補碼表示;尾數(shù)部分24位(含數(shù)符1位),用規(guī)格化定點小數(shù)補碼表示,基數(shù)

為2。求X=256.5的浮點表示格式

256.5=+(100000000.1)B

所求256.5的浮點表示格式為:00001001010000000010000000000000

?將十進制數(shù)178.125表示成IEEE754單精度浮點數(shù)

178.125=10110010.001B

指數(shù)E=7+127=134=10000110B=l.0110010001X2-7

127是單精度浮點數(shù)應加的指數(shù)偏移量,其完整的浮點數(shù)形式為:

01000011001100100010000000000000

補碼加法

用補碼表示定點數(shù),加減運算可以統(tǒng)i成加法運算。運算器中只需要一個加

法器就可以了,不需要減法器。

補碼加法的公式為:[x]補+[y]補=[x+y]補(mod2)

證明:設x和y均為定點小數(shù),且運算結(jié)果沒有溢出。即

|x|<1,Iy|<1,Ix+y|<1

(1)x>0,y>0,貝Ux+y>0。正數(shù)的補碼和原碼是一樣的,可得:

[x]補+[y"b=x+y=[x+y]補(mod2)

(2)x>0,y<0,x+y20或x+y<0。

反]補=*,[y]補=2+y

[x]補+[y]補=x+2+y=2+(x+y)

當x+y?O時,2+(x+y)?2,對于模2來說,2被丟掉,于是

[x]補+[丫]補=*+丫=[x+y]補(mod2)

當x+y<0時,2+(x+y)<2,于是

[x]補+[y]補=2+(x+y)=[x+y]補(mod2)

(3)x<0,y>0o

這種情況和第2種情況證明方法相同。

(4)x<0,y<0,則x+y<0。

[x]補=2+x,[y]補=2+y

[x]補+[y]補=2+x+2+y=2+(2+x+y)

(2+x+y)小于2而大于1的數(shù),第一個2作為進位被舍棄。于是

[x]補+[y]補=2+(x+y)=[x+y]補(mod2)

至此我們證明了在模2意義下,兩數(shù)的補碼之和等于這兩個數(shù)之和的補碼。這

個結(jié)論也適用于定點整數(shù)。

例:x=+0.1011,y=—0.0101,求x+y。

【X]補=0.1011,[y]補=1.1011

【X]補0.1011

+[y]補1.1011

[x+y]補10.0110x+y=0.0110

在模2意義下,超過2的進位應舍棄。

符號位作為數(shù)的--部分參加運算。

補碼減法

數(shù)用補碼表示時,減法運算可轉(zhuǎn)化為加法運算。公式為:

[x—y]補=[x+(—丫)]補=以]補+[—y]補(mod2)

已知[y]補求[—y]補的方法是:將[y]補的所有位(包括符號位)一起取反,

然后在最低位加1(對定點小數(shù)相當于加2—n):

[―y]補=[[y]補+2?-n)

證明:

(1)若y為正數(shù),1>y^Oo[y]補=0.yly2…yn=y。

[—y]補=2+(—y)=2—0.yly2…yn=2"(―n)+(1.11…1一0.yly2…yn)

=—>0.yly2…yn+2”(―n)

(2)若y為負數(shù),0>y>—lo[y]補=1.yly2…yn=2+y。

[―丫]補=—y=2—1.yly2…yn=2"(—n)+(1.11…1—1.yly2…yn)

=—>1.yly2…yn+2”(—n)

例:x=+1101,y=+0110,求x-y

岡補=01101

[X]補01101

[y]補=00110

[-y]^=11010+[-y]補11010

x-y=+0111[x,y]補100111

溢出檢測

運算結(jié)果超出了機器允許的表示范圍稱為溢出。兩個同符號數(shù)相加,如果結(jié)

果的符號與參加運算的操作數(shù)的符號相反,則表明有溢出。兩個正數(shù)相加產(chǎn)生的

溢出稱為上溢;兩個負數(shù)相加產(chǎn)生的溢出稱為下溢。

1.單符號法

兩個正數(shù)相加,最高有效位產(chǎn)生進位而符號位無進位(此時符號位從0變成

1)則產(chǎn)生上溢;兩個負數(shù)相加,最高有效位無進位而符號位有進位(此時符號

位從1變成0)則產(chǎn)生下溢。

溢出邏輯表達式為:V=Cf?C0

其中Cf為符號位產(chǎn)生的進位,co為最高有效位產(chǎn)生的進位。

2.雙符號法

雙符號位補碼也稱“變形補碼”或“模4補碼”。通過采用雙符號位,可使

所能表示的數(shù)的范圍比模2補碼擴大一倍。其定義為:

2>xNO(mod4)

⑶產(chǎn){202xN—2

用Sfl和Sf2表不[x]補最高符號位和第二符號位,貝U:

snsi-2=oo0Wx<1

SflSf2=01lWx<2

SflSf2=ll—l〈x<0

SflSf2=10-2Wx<<-1

模4補碼的運算規(guī)則為:[x]補+[丫]補=反+丫]補(mod4)

若運算結(jié)果中Sfl和Sf2相同則無溢出;若SflSf2=01表示上溢;若SflSf2

=10表示下溢。溢出邏輯表達式為Sfl?Sf2o無論是否溢出,最高符號位Sfl

永遠表示運算結(jié)果的正確符號。

為了得到兩數(shù)變形補碼之和等于兩數(shù)之和的變形補碼,同樣必須:

1.兩個符號位都看作數(shù)碼一樣參加運算

2.兩數(shù)進行以4位模的加法,即最高符號位上產(chǎn)生的進位要丟掉。

采用變形補碼后,如果兩個數(shù)相加后,其結(jié)果的符號位出現(xiàn)“01”或“10”

兩種組合時,表示發(fā)生溢出。這是因為兩個絕對值小于1的數(shù)相加,其結(jié)果不會大

于或等于2,所以最高符號位永遠表示結(jié)果的正確符號。

采用變形補碼后,正數(shù)的符號為00,負數(shù)的符號為11

[例14]x=+0.1100,y=+0.1000,求x+y。

[x]補=00.iioo,[y]補=00.looo

[x]補oo.1100

+[v麻oo.iooo

01.0100

兩個符號位出現(xiàn)“oi”,表示已溢出,即結(jié)果大于+1。

[例15]x=-0.1100,y=-0.1000,求x+y。

[X]補=11.0100,[y]補=11.1000

[X]補11.0100

+[y]兼ii.iooo

110.1100

兩個符號位出現(xiàn)“io”,表示已溢出,即結(jié)果小于-1。

全加器

全加器(FullAdder,FA)將兩個二進制數(shù)字Ai、Bi和一個進位輸入Ci

相加,產(chǎn)生一個和輸出Si,以及一個進位輸出Ci+1。

S,~Aj?Bj?Cj

G+1=AB+B£+CA=AB+(A]3BJCi

門的延遲時間

常用門電路的國外常用符號和延遲時間。T表示一個與門或一個或門的延遲

時間。對一位全加器來說,Si的時間延遲為6T,Ci+l的時間延遲為5T。

門邏輯符號延遲時間

T

與非4ZZ>

或非工>T

非七>T

與O-T

或工>T

異或無>3T

同或1>37-

符號位

考慮溢出檢測時,延遲時間為Ta=3T+5T+(n-1)X2T+3T=(2n+9)T

不考慮溢出檢測時,延遲時間為Ta=3T+5T+(n—2)X2T+3T=(2n+7)T

十進制加法器

兩個一位十進制數(shù)相加,并考慮低位的進位,結(jié)果范圍0-19。

加法器輸出修正后輸出加法器輸出修正后輸出

和和

;;S1'So'

C'SSCS3S2S1Soc's;S1,SoCS3S2S1So

000000000001001010]0000

10000100001110101110001

20001000010120110010010

30001100011130110110011

40010000100140111010100

50010100101150111110101

6001100011016T000010110

70011100111171000110111

80100001000181001011000

90100101001191001111001

在十進制運算時,,當相加二數(shù)之和大于9時,便產(chǎn)生進位??墒怯肂CD碼完成

十進制數(shù)運算時,當和數(shù)大于9時,必須對和數(shù)進行加6修正。這是因為,采用BCD

碼后,在二數(shù)相加的和數(shù)小于等于9時,十進制運算的結(jié)果是正確的;而當相加的

和數(shù)大于9時,結(jié)果不正確,必須加6修正后才能得出正確的結(jié)果。

S|s(>

例:X=15(D)Y=26(D)計算Z=X+Y=41(D)

X0=5=0101,Y0=6=0110,Xl=l=0001,Yl=2=0010

修正之后應該為:

SO=1=OOO1,Cl=l,Sl=4=0100

若不進行修正,結(jié)果為SO=XO+YO=B(H)=1011,S1=X1+Y1=3(H)=0011

原碼乘法

1.人工算法和機器算法的同異點

兩個原碼表示的數(shù)相乘的運算規(guī)則是:乘積的符號位由兩數(shù)的符號位按異或

運算得到,而乘積的數(shù)值部分則是兩個正數(shù)相乘之積。

被乘數(shù):值]原=*£.XnT…X/o

乘數(shù):?】原=丫「丫「「"超

乘積:Ms=(XfeYf)+(O.Xn.v.^XoMO.yn.v.-YiYo)

對于只有加法器和移位器的計算機,可以通過多次執(zhí)行“加法一移位”操作

來實現(xiàn)乘法。

2.不帶符號的陣列乘法器

設A和B是m位和n位的不帶符號的二進制整數(shù),相乘產(chǎn)生m+n位乘積P:

■—1n-1W-lJt-1

k

尸=(蟲勺2=LA(°也)2力=^pk2

i-0>0i-0>0I

則乘積P的數(shù)值為:

34aja2ai

X()

b4b3b2b|b

a3boa2b|ia|b()

a4bla3bla2blaiha()b|

a4b2a3b2a2b2aib2aobi

a4b3ajb3a2b5aibja?bi

+a3b$a2b4a)b4a(>b4

P9PSP7P6P5P4PiP2Plp<>

A=am.i???aiHobn.i...bibo=B

J一|「月二」||

JIIJ-TL

ri???riri

,*am.bnjaib()+「aobo

mxn乘法陣列

P=Pm+n-l..........P1PO

aibj稱為位積。mXn個位積可以通過mXn個與門并行產(chǎn)生。

陣列乘法器

這種乘法器要實現(xiàn)n位Xn位乘法時,需要n(n—l)個全加器和n~2個與門。

所需時間為:

tm=T+(n-2)6T+5T+(n-2)2T+3T=(8n-7)T

加數(shù)]^5T

[a令人

進位

輸出和輸出

CiAiBi

對2求補電路

對2求補時,采用自右向左按位掃描技術(shù)。設人=211…alaO是(n+1)位

帶符號數(shù)的原碼,an為符號位,要求確定它的補碼。求補的方法是從數(shù)的最右

端aO開始,從右向左掃描,直到找出第一個“1"。例如ai=l,ai左側(cè)的每一

個數(shù)值位都取反,ai和ai右側(cè)的位保持不變。當控制信號線E為“1”時,啟動

對2求補的操作;當控制信號線E為“0”時,輸出和輸入相等??梢岳梅?/p>

位來作為控制信號。

a*n的延遲時間為:tTC=nXT+T+3T=(n+4)T

若輸入為帶符號數(shù)的補碼,則輸出為該數(shù)的原碼,即[[A]補]補=[A]原

3.帶符號的陣列乘法器

算前求補器的作用是將乘數(shù)和被乘數(shù)補碼變成原碼;算后求補器的作用是將

乘法陣列輸出的乘積原碼變成補碼。

被乘數(shù)補碼乘數(shù)補碼

A=a?an.|-aia()B=bnbn.ib|b(?

例:x=-15,y=-13,用帶求補器的陣列乘法器求xy。

[x]補=10001,[y]補=10011

算前求補器輸出為:1x1=1111,lyl=1101

陣列乘法器輸出為:11000011

乘積的符號位為0,算后求補器輸出為:11000011

乘積的補碼為:[xy]補=011000011

補碼與真值的關(guān)系

考慮一個定點補碼整數(shù)田]補=2*11—1…alaO,其中an是符號位。[N]補和真

值N的關(guān)系可以表示成:

十%2aH=0

N=<TTT

一U+匯(1一%)2']=-2"+工%2‘4=1

、£=0x=0

以上兩式可以合并成下列形式:

N=-

i=0

因此可以認為符號位an具有負的權(quán)值(一2%),而數(shù)值位ai具有正的權(quán)值(十

2"i)o另外,一N的值可以用下式計算:

[-N]補―…%a0+l

-N=-(l-a”)2"+反(1—丐)21+1

i-0

一般化的全加器

C為1表示“2”,S為1表示“一1”,因此結(jié)果為“1”

類型邏輯符號操作

-X

X2類

。類Y全加器-Y

全加器+1Z(全減器)十)z

JCS(-c)s

X-X

1類Y3類-Y

全加器+1-Z全加器土)-Z

C(-S)(-c)(-s)

通過把正權(quán)或9負權(quán)加到全加器的輸入/輸出端,可以歸納出四類加法器。每

一類加法器用它所包含的負權(quán)輸入的個數(shù)命名。

以第1類全加器為例,其真值表為:

ZC-)cco

OOOOO

OO11O

O1O11

O11OO

1OO11

1O1OO

11OO1

1111

對0類、3類全加器:

S=XYZ+XYZ+XYZ+XYZ

C=XY+YZ+XZ

對1類、2類全加器:

S=XYZ+XYZ+XYZ+XYZ

C=XY+YZ+XZ

直接補碼陣列乘法器

設被乘數(shù)A和乘數(shù)B是兩個5位的二進制補碼數(shù),即

A=(a4)a3a2ala0,B=(b4)b3b2blb0

它們具有帶負權(quán)的符號位a4和b4(用括號標注)。將符號位一起參加運算,

并用括號標注具有負權(quán)的位積,則A和B相乘的計算過程如下:

()

(a4>aj*3|a

X如。

(b4)b2bib

⑶b(y)a3bDa2bo.3|b()a()b()

町()

(a4b|)a$b]b|aib1ab|

)曲ab

(a4b2a3b2aaib2n2

(a』b0a3bsa2b3aib343

)

+a4b$(a5b4>(a2b4)(a,b4>(a?b]

P?>PsP7P6PsP4P3P2PlPl>

例:x=15,y=-13

岡補=omi

[y]補=(1)0011

01111

x⑴0011

oiii\

01111

00000

00000

+0(1>(1>(1>(1>

______ll?lUll?111

(1>00111101

[xy]補=(1)00111101

xy=-195

利用一般化的全加器可以構(gòu)成直接補碼陣列乘法器:

右上角的三角形用0類全加器,左上角的三角形用1類全加器,最后兩行用

2類全加器。結(jié)果的最高位p9具有負權(quán),所以結(jié)果為補碼。

原碼除法

岡原=*£.xn—1…xlxO,[丫]原=丫£.yn—1…ylyO

則商q=x/y的原碼為:[q]原=(xf,yf)+(O.xn—1…xlxO/O.yn—1…ylyO)

例:被除數(shù)x=0.1001,除數(shù)y=0.1011。手工計算x/y的過程如下:

0.1101

o.1(11iy().?oo1

-0.1011商。

0.10010得余數(shù)r"即瑞

-0.01011_________除數(shù)右移一位.余數(shù)減除數(shù)?商1

0.001110得余數(shù)G

-0.001011除數(shù)右移一位,余數(shù)減除數(shù).商1

0.0000110得余數(shù)「2

-0.0(10111除數(shù)右移一位.余數(shù)不減除數(shù).商。

().00001100得余數(shù)Q

一仇1)0001011除數(shù)右移一位,余數(shù)減除數(shù).商1

0.00000001得余數(shù)r?

恢復余數(shù)法

為方便計算機操作,對手工算法修改如下:

(1)將心算比較余數(shù)和除數(shù)大小改為減法比較,并且減y改為加[-y]補。

數(shù)減除數(shù)大于等于0則商1,小于0則商Oo

(2)將除數(shù)右移改為余數(shù)左移。如果余數(shù)減除數(shù)的差小于0,應將差加上

除數(shù),恢復原來的余數(shù)。這就是恢復余數(shù)法。

注:①為保證余數(shù)左移時符號位不變,應采用雙符號位。雙符號位最高符號位永

遠表示結(jié)果的正確符號;若用單符號位,余數(shù)左移后將可能改變符號位的值

②用雙符號位余數(shù)永遠不會溢出,原因何在?設某次運算的余數(shù)為R,不論是何

種運算方法。若R為正,下次的余數(shù)為2R—y=R+R-y,若R為負,下次的余

數(shù)為2R+y.所以都不會溢出。余數(shù)的絕對值小于除數(shù)的絕對值

00.1001商說明

+【一yh卜1uoIo?x-y

1L11100余數(shù)r°v0.商0

+00-1011加ly恢復余數(shù)

00.1001

<-0L0010余數(shù)左移?位

+【—y】補1Lo1o1減y比較

00.01110.1余數(shù)r,>0.商1

?-00.1110余數(shù)左移?位

+[-yhb1LoIo1減y比較

00-00110.11余數(shù)收>0.商1

?-00.0110余數(shù)左移位

+Ly】補11.0101減y比較

IL10110.110余數(shù)r$v0.商0

+00.1011力叫恢復余數(shù)

00.0110

?—00.1100余數(shù)左移?位

+[—W補1Lo?01減y比較

00.00010.1101余數(shù)口>0.商1

加減交替法

恢復余數(shù)法中,設某次余數(shù)為ri,要繼續(xù)進行下面的求商運算,需要將ri

左移一位,然后減去除數(shù),進行比較:2ri-y

結(jié)果小于0時商上0,并加y恢復余數(shù):(2ri—y)+y=2ri

繼續(xù)下面的求商,又要將它左移一位,再減去除數(shù)2(2ri)—y=4ri—y

當(2ri—y)小于0時,商仍上0,但不進行加y恢復余數(shù)的操作,而是將(2ri

一y)左移一位,然后加上除數(shù)2(2ri—y)+y=4ri—y也得到同樣的余數(shù)(4ri—

y)=

所以,當比較結(jié)果小于0時,仍將結(jié)果左移一位,然后加上除數(shù)y。這就是

不恢復余數(shù)法,也稱加減交替法。

加減交替法的運算規(guī)則是:

余數(shù)為正時,商上1,余數(shù)左移一位,再減去除數(shù),得到新的余數(shù);

余數(shù)為負時,商上0,余數(shù)左移一位,再加上除數(shù),得到新的余數(shù)。

00.1001商說明

+[-yk?i.o101x-y

1L11100余數(shù)商0

^—\L1100左移一位

+yoo.?011余數(shù)為負,加y

00.01110J余數(shù)Q>0”商1

?—00.1110左移一位

+[-yk1i.o101余數(shù)為正-減y

00.00110.11余數(shù)商1

?—00.0110左移一位

+[-yk1i.o101余數(shù)為正”減y

1L10110.110余數(shù)商o

?—11.0110左移一位

+yoo.?011余數(shù)為負"力fly

00.00010.1101余數(shù)商1

恢復余數(shù)法的運算規(guī)則是:

余數(shù)為正時,商上1,余數(shù)左移一位,再減去除數(shù),得到新的余數(shù);

余數(shù)為負時,商上0,再加上除數(shù)(恢復余數(shù)),余數(shù)左移一位,再減

去除數(shù),得到新的余數(shù)。

加減交替法的運算規(guī)則是:

余數(shù)為正時,商上1,余數(shù)左移一位,再減去除數(shù),得到新的余數(shù);

余數(shù)為負時,商上0,余數(shù)左移一位,再加上除數(shù),得到新的余數(shù)。

證明:2(R+y)-y=2R+y

特點:

1、’恢復余數(shù)除法,最后的操作為減法

2、都需要余數(shù)左移一位后再進行加或減

可控加法/減法單元

可控加法/減法單元(CAS)由一個全加器和一個異或門構(gòu)成,有4個輸入

端和4個輸出端。

當控制端P為0時,實現(xiàn)全加器:Si=AieBi?Ci,Ci+i=AiBi+BiCi+AiCi

控制端為1時,實現(xiàn)補碼減法:Si=Ai?Bi?Ci,Ci+i=AiBi+BiCi+AiCi

設[x]補=0.xlx2x3,[y]補=O.yly2y3。下圖電路當P=0時實現(xiàn)x+y,P=1

時實現(xiàn)x—y。減法是通過加上[—y]補實現(xiàn)的。

陣列除法器

利用CAS構(gòu)成的不恢復余數(shù)陣列除法器如下。被除數(shù)x=0.xlx2x3x4x5x6,

除數(shù)y=O.yly2y3,均為正數(shù),且x<y(否則商大于1,溢出)。

若上一行余數(shù)小于除數(shù)則不產(chǎn)生進位,qi=O,下一行做加法。上一行余數(shù)

大于除數(shù)則產(chǎn)生進位,Qi=l,下一行做減法。例:x=0.101001,y=0.111

2n位除以n位的陣列除法器,有單元(n+1)人2個,延遲時間為td=(n+1P2TCAS。

多功能算術(shù)邏輯單元

算術(shù)邏輯運算單元(ArithmeticLogicUnit,ALU)不僅具有多種算術(shù)運算和邏

輯運算的功能,而且具有先行進位邏輯,從而能實現(xiàn)高速運算。

全加器的邏輯表達式為:

Fi=Ai?Bi?Ci

Ci+l=AiBi+BiCi+AiCi

為了對全加器進行功能擴展以完成多種算術(shù)和邏輯運算,將Ai和Bi送到由

SO,SI,S2,S3控制的函數(shù)發(fā)生器內(nèi),產(chǎn)生組合函數(shù)Xi和Yi,再送到全加器

內(nèi)進行全加:

Fi=Xi?Yi?Cn+i

Cn+i+1=XiYi+XiCn+i+YiCn+i

進位下標用n+i代替i,n表示多片級聯(lián)時每片的進位輸入。

全加器SoS】耳52導Xi

00001

%A

S01電01g+線

函數(shù)發(fā)生器

S2-10104+線

S-ff

tt

uuR110114

Ai

Xi和Yi的邏輯表達式為:

X=5X+S_S_(A.+B.)+S.S,<A.+B.)+S.S.A.

i2323ii23】i231

Xj=$3八再]+S2A.Bi

Y.=SJX.+*S/.B.-FS.Sl.B.

iOliOliiOliiYj=Aj+S0Bi4-SiBj

另外還有:

Xi+x=Xi

XiX=*

因此全加器的進位信號可以寫成:Cn+i+i=XiX+(Xi+Yi)C1Hi

4位之間采用先行進位邏輯,每一位的進位公式遞推如下:

Cn+1=Y0+X0Cn

%=丫1+X』=Y1+X]Y。+XiX?

CB+3=Y2+X2Ca+2

=丫

Cn+4=Y3+X3CB+33+X3Y2+X3X2X+X3X2X1Y0+X3X2X1X0Cn

定義

P=X3X2X1X0

G稱為進位產(chǎn)生輸出,P稱為進位傳遞輸出,它們和CLA電路配合使用,

可以實現(xiàn)多級先行進位。

74181是4位算術(shù)邏輯單元。它除了有SO?S3四個控制端外,還有一個控

制端M,用來控制74181是進行算術(shù)運算還是進行邏輯運算。74181既適用于正

邏輯數(shù)的運算,也適用于負邏輯數(shù)的運算。還有一個輸出端“A=B”可用于檢測

兩數(shù)相等。

負邏輯和正邏輯方式下74181的方框圖

以正邏輯為例。當M=H(高電平)時,各位輸出的表達式為:

K=X?Y?i=0J,2,3

此時Fi只和Xi及Yi有關(guān),與進位信號無關(guān),實現(xiàn)邏輯運算。

當M=L(低電平)時,各位的輸出表達式為:

F尸三肥。二

=\?Y;?C-i=0J23

而日、匕和,相加產(chǎn)生的進位剛好為好工;,此時74181實現(xiàn)算術(shù)運算:

Cn=H無進位輸入,74181實現(xiàn)元兄兄兄加再71vo;

Cn=l■有進位輸入,74181實現(xiàn)元兄兄兄加Y3v2工?0加1。

全加器的邏輯表達式為:

Fi=Ai?Bi?Ci

Ci+l=AiBi+BiCi+AiCi

F0=A0?B0?C0Cl=A0B0+B0C0+A0C0

F1=A1?Bl?C1C2=A1B1+B1C1+A1C1

F2=A2?B2?C2C3=A2B2+B2c2+A2c2

F3=A3?B3?C3

每一級需要的進位信號為上一級的加數(shù)兩兩相乘之和

Fj=Xi十Y十=

,c^^xY+YcT+xcr

Fo=Xo?YoffiCT000o

匕="十I十蟲/C;;2AXM+丫1,;:1+xc;:i

F2?Y2sCn+2^^rCrH.3AX2Y2IY2c1IX2Cn+2

F3-X3ffiY3?C;+3

耳=苫嗎十壇

FO-XO?

溫馨提示

  • 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

提交評論