計算機組成原理 第2章-運算方法與運算器_第1頁
計算機組成原理 第2章-運算方法與運算器_第2頁
計算機組成原理 第2章-運算方法與運算器_第3頁
計算機組成原理 第2章-運算方法與運算器_第4頁
計算機組成原理 第2章-運算方法與運算器_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第二章:運算方法和運算器2.1數(shù)據(jù)與文字的表示方法2.2定點加法、減法運算2.3定點乘法運算2.4定點除法運算2.5定點運算器的組成2.6浮點運算方法和浮點運算器

2.1數(shù)據(jù)與文字的表示方法一、計算機中常用的數(shù)據(jù)表示格式:定點格式,

浮點格式.1、定點格式:約定機器中所有數(shù)據(jù)的小數(shù)點位置是固定不變的。將數(shù)據(jù)表示成定點純小數(shù)或定點純整數(shù)。假設用一個n+1位字來表示一個定點數(shù)X,在定點機中可表示為如下形式:

X0

X1X2...Xn-1

Xn

符號

量值(尾數(shù))

如果數(shù)X表示的是純小數(shù):0≤|X|≤1-2-n

如果數(shù)X表示的是純整數(shù):

0≤|X|≤2n-1

2、浮點表示法,即小數(shù)點的位置是浮動的:N=Re.m

其中m稱為浮點數(shù)的尾數(shù),用定點小數(shù)表示。e稱為浮點的指數(shù),是一個整數(shù),常稱為階碼。比例因子的基數(shù)R對二進計數(shù)制的機器是一個常數(shù),一般規(guī)定R為2,8或16。因此一個機器浮點數(shù)應當由階碼和尾數(shù)及其符號位組成:

階符

階碼

數(shù)符

尾數(shù)

EsE1E2...Em

MsM1M2...Mn313023220IEEE標準:

32位浮點數(shù)

32位浮點數(shù)中,S是浮點數(shù)的符號位,占1位,安排在最高位,S=0表示正數(shù),S=1表示負數(shù)。M是尾數(shù),放在低位部分,占有23位,用小數(shù)表示,小數(shù)點放在尾數(shù)域的最前面。E是階碼,占有8位,階符采用隱含方式,即采用移碼方法來表示正負指數(shù)。移碼方法對兩個指數(shù)大小的比較和對階操作都比較方便,因為階碼域值大者其指數(shù)值也大。采用這種方式時,將浮點數(shù)的指數(shù)真值e變成階碼E時,應將指數(shù)e加上一個固定的偏移值127(01111111),即E=e+127。

一個規(guī)格化的32位浮點數(shù)x的真值可表示為:

x=(-1)s×(1.M)×2E-127

e=E-127

其中尾數(shù)域所表示的值是1.M。因為規(guī)格化的浮點數(shù)的尾數(shù)域最左位(最高有效位)總是1。故這一位經(jīng)常不予存儲,而認為隱藏在小數(shù)點的左邊。

64位的浮點數(shù)中符號位1位,階碼域11位,尾數(shù)域52位,指數(shù)偏移值是1023。因此規(guī)格化的64位浮點數(shù)x的真值為:

x=(-1)s×(1.M)×2E-1023

e=E-1023SEM[例1]若浮點數(shù)x的二進制存儲格式為(41360000)16,求其32位浮點數(shù)的十進制值。

解:將16進制數(shù)展開后,可得二進制數(shù)格式為

0

1000001

001101100000000000000000

S

階碼(8位)

尾數(shù)(23位)

指數(shù)e=階碼-127=10000010-01111111=00000011=(3)10

包括隱藏位1的尾數(shù)1.M=1.01101100000000000000000=1.011011

于是有

x=(-1)s*1.M*2e

=+(1.011011)*23=+1011.011=(11.375)10

[例2]將十進制數(shù)20.59375轉換成32位浮點數(shù)的二進制格式來存儲。

解:首先分別將整數(shù)和分數(shù)部分轉換成二進制數(shù):

20.59375=10100.10011

然后移動小數(shù)點,使其在第1,2位之間

10100.10011=1.010010011*24

e=4

于是得到:S=0,E=4+127=131=10000011,

M=010010011

最后得到32位浮點數(shù)的二進制存儲格式為:

01000001101001001100000000000000=(41A4C000)16

思考題:問:1、計算機中常用的數(shù)據(jù)表示格式?2、按照IEEE754標準,32位浮點數(shù)的標準格式包含哪幾部分?3、對于真值:x=-1.0110110×2100如何用32位浮點數(shù)的標準格式表示?313023220SEM數(shù)符階碼尾數(shù)SE

M(11110001101101100000000000000000)2

=(C1B60000)16答:定點格式,浮點格式二、數(shù)的機器碼表示:真值:書寫用的數(shù),機器碼:機器內部使用的數(shù)1)

原碼:比較自然的表示法,最高位表示符號,0為正,1為負。優(yōu)點:簡單易懂。缺點:加減法運算復雜。

若定點小數(shù)的原碼形式為x0.x1x2...xn,則原碼表示的定義是

[X]原=X

1>X≥0[X]原=1-X=1+|X|

0≥X>-1

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

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

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

通常,對于正數(shù)X=+0.x1x2…xn,則有:

[X]原=0.x1x2...xn

對于負數(shù)X=-0.x1x2…xn,則有:

[X]原=1.x1x2...xn

對于0,原碼機器中往往有“+0”、“-0”之分,故有兩種形式:

[+0]原=0.0000...0

[-0]原=1.0000...0

若定點整數(shù)的原碼形式為x0x1x2...xn,則原碼表示的定義是:

[X]原=X

2n>X≥0[X]原=2n-X=2n+|X|

0≥X>-2n2)

補碼:加減法運算方便,減法可以轉換為加法。若定點小數(shù)的補碼形式為x0.x1x2...xn,則補碼表示的定義是:

[X]補=X

1>X≥0[X]補=2+X=2-|X|

0≥X>-1

(mod2)

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

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

X=-0.1011,則[X]補=10+X=10.0000-0.1011=1.0101一般情況下,對于正數(shù)X=+0.x1x2...xn,則有:

[X]補=0.x1x2...xn

對于負數(shù)X=-0.x1x2...xn,則有:

[X]補=10.00...0-0.x1x2...xn(mod2)

對于0,在補碼情況下,[+0]補=[-0]補=0.0000

(mod2)

注意,0的補碼表示只有一種形式。對2求補電路見圖2.6

對于定點整數(shù),補碼表示的定義是:

[X]補=X

2n>X≥0

[X]補=2n+1+X=2n+1-|X|

0≥X>-2n

(mod

2n+1)3)

反碼:將二進制數(shù)的各位數(shù)碼0變?yōu)?,1變?yōu)?。它是為計算補碼方便而引入.

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

[X]反=X

1>X≥0

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

0≥X>-1

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

一般情況下,對于正數(shù)X=+0.x1x2...xn,則有

[X]反=0.x1x2...xn

對于負數(shù)X=-0.x1x2...xn,則有

[X]反=1.x1x2...xn

對于0,有[+0]反=[-0]反之分:

[+0]反=0.00...0

[-0]反=1.11...1

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

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

[X]補=2+X

可得到

[X]補=[X]反+2-n

若要一個負數(shù)變補碼,其方法是符號位置1,其余各位0變1,1變0,然后在最末位(2-n)上加1。

對定點整數(shù),反碼表示的定義是

[X]反=X

2n>X≥0

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

0≥X>-2n若要一個負數(shù)變補碼,只要將符號位置1,各位取反,末位加1。4)

移碼:用于階碼的表示,兩個移碼容易比較大小,便于對階。由于階碼是個n位的整數(shù),所以假定定點整數(shù)移碼形式為x0x1x2...xn時,移碼的定義是:

[X]移=2n+X

,

2n>X≥-2n

式中[X]移為機器數(shù),X為真值。即將數(shù)值向X軸正方向平移2n

若階碼數(shù)值部分為5位,以x表示真值,則

[X]移=25+X

25>X≥-25

例如,當正數(shù)x=+10101時,[X]移=1,10101;當負數(shù)x=-10101時,[X]移=25+X=25-10101=0,01011。移碼中的逗號不是小數(shù)點,而是表示左邊一位是符號位。顯然,移碼中符號位x0表示的規(guī)律與原碼、補碼、反碼相反。一、計算:1、x=23/128[x]補=[x]原=2、x=-35/64[x]補=[x]原=3、x+y=1010[x+y]補=[x+y]原=4、x-y=-1101[x-y]補=[x-y]原=二、設機器字長為5位,采用定點整數(shù)表示,x=+110,求[x]原,[x]補解:因為n+1=5,所以n=4,[x]原=0,0110[x]補=0,0110↑↑↑x0x1…x4

顯然,正數(shù)的原碼與補碼形式相同。三、設機器字長8位并用定點整數(shù)表示,模為28,若x=-110,求[x]原,[x]補。解:因為n+1=8,所以n=7,[x]原=10000110[x]補=M+x=28+(-110)=(100000000)2-110=11111010

四、由補碼求原碼與真值:對于正數(shù),原碼與補碼相同,其真值在略去正號后,形式上與機器數(shù)相同;對于負數(shù),保持符號位為1,其余各位變反末位加1,即得到原碼表示,將負數(shù)原碼符號恢復為負號,即得到真值表示。例:如[x]補=00000110,則[x]原=00000110,x=+110如[x]補=11111010,則[x]原=10000110,所以x=-110[x]原的具體計算如下:[x]補=11111010變反10000101末位加1+1

10000110五、補碼的性質:補碼的最高位是符號位,在形式上同于原碼,0表示正,1表示負。但應注意,原碼的符號位是人為地定義0正1負;而補碼的符號位是通過模運算得到的,它是數(shù)值的一部分,可直接參與運算。

[例3]以定點整數(shù)為例,用數(shù)軸形式說明原碼、反碼、補碼表示范圍和可能的數(shù)碼組合情況。

解:原碼、反碼、補碼表示分別示于下圖。與原碼、反碼不同,在補碼表示中“0”只有一種形式,且用補碼表示負數(shù)時范圍可到-2n。

11...1

10...01

10...0

00...0

00...01

01...1

-(2n-1)

-1

0

+1

+(2n-1)

原碼

10...0

11...10

11...1

00...0

00...01

01...1

-(2n-1)

-1

0

+1

+(2n-1)

反碼

10...0

10...01

11...1

00...0

00...01

01...1

-2n

-(2n-1)

-1

0

+1

+(2n-1)

補碼

[例4]設機器字長16位,定點表示,尾數(shù)15位,數(shù)符1位,問:

(1)定點原碼整數(shù)表示時,最大正數(shù)是多少?最小負數(shù)是多少?

(2)定點原碼小數(shù)表示時,最大正數(shù)是多少?最小負數(shù)是多少?

解:(1)定點原碼整數(shù)表示

最大正數(shù)值=(215-1)10=(+32767)10

0

111111111111111

最小負數(shù)值=-(215-1)10=(-32767)10

1

111111111111111

(2)定點原碼小數(shù)表示

最大正數(shù)值=(1-2-15)10=(+0.111...11)2

最小負數(shù)值=-(1-2-15)10=(-0.111...11)2

[例5]假設由S,E,M三個域組成的一個32位二進制字所表示的非零規(guī)格化浮點數(shù)x,真值表示為:

x=(-1)s*(1.M)*2E-128

問:它所表示的規(guī)格化的最大正數(shù)、最小正數(shù)、最大負數(shù)、最小負數(shù)是多少?

解:

(1)最大正數(shù)0

11111111

11111111111111111111111

X=[1(1-2-23)]*2127

(2)最小正數(shù)0

00000000

00000000000000000000000

X=1.0*2-128

(3)最小負數(shù)1

11111111

11111111111111111111111

X=-[1+(1-2-23)]*2127

(4)最大負數(shù)1

00000000

00000000000000000000000

X=-1.0*2-1282.1.3字符與字符串的表示方式:ASCII碼:P28表2.12.1.4漢字的表示方式:1)

輸入碼:用于漢字輸入。數(shù)字編碼、拼音碼、字形編碼。2)

內碼:用于漢字的存儲、交換、檢索等操作的機內代碼,一般采用兩個字節(jié)表示。3)

字模碼:是用點陣表示的漢字字形代碼,它是漢字的輸出形式,用于漢字的顯示。2.1.5校驗碼奇、偶校驗碼:奇偶校驗碼是一種開銷最小,能發(fā)現(xiàn)數(shù)據(jù)代碼中一位出錯情況的編碼,常用于存儲器讀寫檢查,或ASCII字符傳送過程中的檢查。它所約定的編碼規(guī)律是讓整個校驗碼(包括有效信息和校驗位)“1”的個數(shù)為奇數(shù)或為偶數(shù)。有效信息部分當然既可能是奇性也可能是偶性,但可以配上一個為0或為1的校驗位,使整個校驗碼能滿足指定的奇偶性要求。由于有效信息的奇偶性只有兩種可能:奇偶,所以只需配一位校驗位。則奇校驗就是使整個奇校驗碼“1”的個數(shù)為奇數(shù)。偶校驗法就是使整個校驗碼“1”的個數(shù)為偶數(shù)。例1:有效信息

1011001

奇校驗碼10110011偶校驗碼

10110010例2:有效信息

1011011

奇校驗碼10110110偶校驗碼

10110111

譯碼:當從主存讀出某數(shù)據(jù)時,將整個校驗碼(連同校驗位)一道統(tǒng)計。若“1”的個數(shù)仍為偶數(shù)就認為該數(shù)是正確的,沒有破壞原來約定的規(guī)律。若“1”的個數(shù)為奇數(shù),表明有錯,應停止使用這個數(shù)據(jù),或重新讀取,看是否屬于偶然性錯誤。

2.2定點加法減法運算一、補碼加法公式:[X]補+[Y]補=[X+Y]補(mod2)

[例1]x=0.1001,y=0.0101,求x+y

解:

[x]補=0.1001

[y]補=0.0101

[x]補

0.1001

+

[y]補

0.0101

──────────────

[x+y]補

0.1110

所以

x+y=+0.1110[例2]x=+0.1011,y=-0.0101,求x+y。

解:

[x]補=0.1011

[y]補=1.1011

[x]補

0.1011

+

[y]補

1.1011

──────────────

[x+y]補

1

0.0110(在模2的意義下相加,有超過2的

所以

x+y=+0.0110進位要丟掉)二、補碼減法公式:[x-y]補=[x]補

-[y]補=[x]補+[-y]補[例3]已知x1=-0.1110,x2=+0.1101,求[x1]補[-x1]補[x2]補[-x2]補。

解:

[x1]補=1.0010

[-x1]補=→[x1]補+2-4=0.1101+0.0001=0.1110

[x2]補=0.1101

[-x2]補=→[x2]補+2-4=1.0010+0.0001=1.0011(符號→表示對[x1]補作包括符號位在內的求反操作)

[例4]x=+0.1101,y=+0.0110,求x-y。

解:

[x]補=0.1101

[y]補=0.0110

[-y]補=1.1010

[x]補

0.1101

+

[-y]補

1.1010

──────────────

[x-y]補

1

0.0111

所以

x-y=+0.0111三、溢出概念與檢測方法溢出概念:在定點小數(shù)機器中,數(shù)的表示范圍為|X|<1。在運算過程中如出現(xiàn)大于1的現(xiàn)象,稱為“溢出”。在定點機中,正常情況下是不允許的。

[例5]x=+0.1011,y=+0.1001,求x+y。

解:

[x]補=0.1011

[y]補=0.1001

[x]補

0.1011

+

[y]補

0.1001

──────────────

[x+y]補

1.0100

兩個正數(shù)相加的結果成為負數(shù),這顯然是錯誤的。

[例6]x=-0.1101,y=-0.1011,求x+y。

解:

[x]補=1.0011

[y]補=1.0101

[x]補

1.0011

+

[y]補

1.0101

──────────────

[x+y]補

0.1000兩個負數(shù)相加的結果成為正數(shù),這同樣是錯誤的。[分析]

:發(fā)生錯誤的原因,是因為運算結果產生了溢出。兩個正數(shù)相加,結果大于機器所能表示的最大正數(shù),稱為上溢。而兩個負數(shù)相加,結果小于機器所能表示的最小負數(shù),稱為下溢。

為了判斷“溢出”是否發(fā)生,可采用兩種檢測方法。第一種方法是:采用雙符號位法,也稱為“變形補碼”或“模4補碼”,從而可使模2補碼所能表示的數(shù)的范圍擴大一倍。

數(shù)的變形補碼定義為:

[x]補=x

當2>x≥0

[x]補=4+x

當0>x≥-2

或用同余式表示為:

[x]補=4+x

(mod4)

下式也同樣成立:

[x]補+[y]補=[x+y]補

(mod4)

為了得到兩數(shù)變形補碼之和等于兩數(shù)和的變形補碼,同樣必須:(1)兩個符號位都看做數(shù)碼一樣參加運算;(2)兩數(shù)進行以4為模的加法,即最高符號位上產生的進位要丟掉。

采用變形補碼后,任何小于1的正數(shù),兩個符號位都是(0),即00.x1x2...xn;任何大于-1的負數(shù),兩個符號位都是“1”,即11.x1x2...xn如果兩個數(shù)相加后,其結果的符號位出現(xiàn)“01”或“10”兩種組合時,表示發(fā)生溢出。這是因為兩個絕對值小于1的數(shù)相加,其結果不會大于或等于2,所以最高符號位永遠表示結果的正確符號。

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

解:

[x]補=00.1100

[y]補=00.1000

[x]補

00.1100

+

[y]補

00.1000

──────────────

01.1000

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

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

解:

[x]補=11.0100

[y]補=11.1000

[x]補

11.0100

+

[y]補

11.1000

──────────────

10.1100

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

由此,我們可以得出如下結論:

(1)當以模4補碼運算,運算結果的二符號位相異時,表示溢出;相同時,表示未溢出。故溢出邏輯表達式為V=Sf1異或Sf2,其中Sf1和Sf2分別為最高符號位和第二符號位,此邏輯表達式可用異或門實現(xiàn)。

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

第二種溢出檢測方法:是采用單符號位法。當最高有效位產生進位而符號位無進位時,產生上溢;當最高有效位無進位而符號位有進位時,產生下溢。故溢出邏輯表達式為V=CfC0,其中Cf為符號位產生的進位,C0為最高有益位產生的進位。此邏輯表達式可用異或門實現(xiàn)。

在定點機中,當運算結果發(fā)生溢出時,機器通過邏輯電路自動檢查出這種溢出,并進行中斷處理。四、基本的二進制加法/減法器:

一位全加器FA電路圖一位全加器邏輯方程:Si=AiBiCiCi+1=AiBi+BiCi+CiAi

N位行波進位加法/減法器:

進位處理方式:串行進位(行波進位)、并行進位五、十進制加法器十進制加法/減法器見圖2.3六、定點乘法運算:設n位被乘數(shù)和乘數(shù)用定點小數(shù)表示為(定點整數(shù)也同樣):被乘數(shù)[X]原=Xf.Xn-1…X1X0乘數(shù)[Y]原=Yf.Yn-1…Y1Y0

乘積[Z]原=(XfYf)+(0.Xn-1…X1X0)(0.Yn-1…Y1Y0)式中,Xf為被乘數(shù)符號,Y1為乘數(shù)符號。乘積符號的運算法則是:同號相乘為正,異號相乘為負。由于被乘數(shù)和乘數(shù)的符號組合只有四種情況(Xf.Yf=00,01,10,11),因此積的符號可按“異或”運算得到。

例:

設X=0.1101,Y=0.1011,讓我們先用習慣方法求X與Y的乘積,其過程如下:0.1101(x)×0.1011(y)────────────110111010000+1101────────────0.10001111(z)

定點乘法運算分為:不帶符號的陣列乘法、帶符號的陣列乘法。在進行帶符號的陣列乘法前應進行求補運算。求補器電路圖見2.6,帶求補級的陣列乘法器見圖2.7七、補碼與真值的轉換公式:對定點補碼整數(shù)[N]補=an-1an-2…a1a0,其中an-1是符號位,補碼整數(shù)[N]補與真值N的關系為:例:已知:[N]補=(01101)2,[-N]補=(10011)2,求[N]補和[-N]補具有的數(shù)值。解:[N]補=(01101)2具有的數(shù)值為:N=-0*24+1*23+1*22+0*21+1*20=(+13)10

[-N]補=(10011)2具有的數(shù)值為:-N=-1*24+0*23+0*22+1*21+1*20=-16+3=(-13)10[例]設x=+15,y=-13,用帶求補器的原碼陣列乘法求出乘積x*y=?

解:設最高位為符號位,輸入數(shù)據(jù)為原碼:

[x]原=01111

[y]原=11101

因符號單獨考慮,算前求補器輸出后,|X|=1111,|y|=1101

1111

×

1101

符號位運算:01=1

──────

1111

0000

1111

+

1111

────────────

11000011

算后求補器輸出為11000011,加上乘積符號位1,得

[x*y]原=111000011

換算成二進制數(shù)真值是X*Y=(-11000011)2=(-195)10

十進制乘法驗證:15*(-13)=-195[例]設x=15,y=-13,用帶求補器的補碼陣列乘法器求出乘積x*y=?并用十進制乘法進行驗證。

解:設最高位為符號位,輸入數(shù)據(jù)用補碼表示:

[x]補=01111

[y]補=10011

乘積符號位運算:X0Y0=01=1表示乘積為負的。算前求補器輸出為|X|=1111,|y|=1101

1111

×

1101

──────

1111

0000

1111

+

1111

────────────

11000011

因乘積為負的,所以算后求補器輸出時,應按負數(shù)求補碼的變換方法將結果變?yōu)閇11000011]補=00111101,并在最高位加上乘積符號1,最后得補碼的乘積值

:[x*y]補=

100111101。利用補碼與真值換算公式,補碼二進制數(shù)真值是:X*Y=-1*28+1*25+1*24+1*23+1*22+1*20=(-195)10

十進制數(shù)乘法驗證:X*Y=15*(-13)=-1952.4定點除法一、原碼除法算法原理:兩個原碼表示的數(shù)相除時,商的符號由兩數(shù)的符號按位相加求得,商的數(shù)值部分由兩數(shù)的數(shù)值部分相除求得。設有n位定點小數(shù):被除數(shù)x,除數(shù)y,其原碼為:

[X]原=Xf.Xn-1…X1X0,

[y]原=yf.yn-1…y1y0則商q=x/y,其原碼為:[q]原=(xfyf)+(0.Xn-1…X1X0/0.yn-1…y1y0)例:

設被除數(shù)x=0.1001,除數(shù)y=0.1011,手算求x÷y的過程:

0.1101商q0.10110.10010x(r0)被除數(shù)小于除數(shù),商0

-0.010112-1y除數(shù)右移1位,減除數(shù),商10.001110r1得余數(shù)r1

-0.0010112-2y除數(shù)右移1位,減除數(shù),商10.0000110r2得余數(shù)r20.00010112-3y除數(shù)右移1位,不減除數(shù),商00.00001100r3得余數(shù)r3

-0.000010112-4y除數(shù)右移1位,減除數(shù),商10.00000001r4得余數(shù)r4得x÷y的商q=0.1101,余數(shù)為r=0.00000001.

二、并行除法器:也叫不恢復余數(shù)陣列除法器,即加減交替法。在不恢復余數(shù)的除法陣列中,當余數(shù)為正時(ri≥0),商“1”,下次做減法運算,減法是用2的補碼運算來實現(xiàn)的,此時[x-y]補=[x]補+[-y]補;當余數(shù)為負時(ri<0),商“0”,下次做加法運算。并且每次運算完成后要將余數(shù)左移一位,再與除數(shù)做加或減運算。商的符號由兩數(shù)的符號按位相加求得。[例20]x=0.101001,y=0.111,求x÷y。解:[-y]補=1.001被除數(shù)x0.101001減y+1.001(相當于加[-y]補)余數(shù)為負1.110001<0→q0=0余數(shù)左移1.10001加y+

0.111余數(shù)為正0.01101>0→q1=1余數(shù)左移0.1101減y+

1.001(相當于加[-y]補)余數(shù)為負1.1111<0→q2=0余數(shù)左移1.111加y+

0.111余數(shù)為正0.110>0→q3=1故得商q=q0.q1q2q3=0.101余數(shù)r=(0.00r3r4r5r6)=0.000110abc=a.b000010100111abC=a+b000011101111ac=a0110dc0a1b4.多路器(ifd==0,c=a;elsec=b)1、與門(c=a.b)2、或門(c=a+b)cMUXabdabcacabc3、反向器(c=a)三、定點運算器組成:工作方式選擇輸入S3S2S1S0

負邏輯輸入與輸出正邏輯輸入與輸出邏輯M=H算術運算M=LCn=L邏輯M=H算術運算M=LCn=HLLLLLLLHLLHLLLHHLHLLLHLHLHHLLHHHHLLLHLLHHLHLHLHHHHLLHHLHHHHLHHHHAABA+B邏輯1A+BBABA+BABABBA+B邏輯0ABABAA減1AB減1AB減1減1A加(A+B)AB加(A+B)A減B減1A+BA加(A+B)A加BAB加(A+B)A+BA加A*AB加AAB加AAAA+BAB邏輯0ABBABABA+BABBAB邏輯1A+BA+BAAA+BA+B減1A加AB(A+B)加ABA減B減1AB減1A加ABA加B(A+B)加ABAB減1A加A*(A+B)加A(A+B)加AA減1說明:(1)H=高電平1,L=低電平0,(2)*表示每一位均移到下一個更高位,即A*

=2A。

多功能74181ALU算術/邏輯運算功能表

2.6浮點運算方法和浮點運算器一、浮點加、減法運算設有兩個浮點數(shù)X和Y,它們分別為:其中Ex和Ey分別為數(shù)x和y的階碼,Mx和My為數(shù)x和y的尾數(shù)。兩浮點加減運算的操作過程大體分為四步:第一步,0操作數(shù)檢查;第二步,比較階碼大小并完成對階;第三步,尾數(shù)進行加或減運算;第四步,結果規(guī)格化并進行舍入處理。圖2.6示出浮點加減運算的操作流程。1、0操作數(shù)檢查。2、比較階碼大小并完成對階:△E=Ex-Ey,若△E=0,表示兩數(shù)階碼相等,可以直接進行尾數(shù)加減運算;若△E>0,表示Ex>Ey,此時,將Y的尾數(shù)向右移位,每右移一位,其階碼加1,直到與X的階碼相等為止,右移的位數(shù)等于階碼△E;若△E<0,表示Ex<Ey,則將X的尾數(shù)也向右移。尾數(shù)右移引起最低有效位的丟失比左移引起最高有效位的丟失造成的誤差要小。3、尾數(shù)求和運算:對階結束后,即可進行尾數(shù)的求和運算。與定點加減運算完全一樣。

4、結果規(guī)格化:當尾數(shù)求和的結果為01.x…x或10.x…x,即兩符號位不相等,此時將尾數(shù)結果右移以實現(xiàn)規(guī)格化,簡稱右規(guī),即尾數(shù)右移1位,階碼加1。否則進行左規(guī)處理,即尾數(shù)每左移1位,階碼減1,直到尾數(shù)的符號和最高有效位具有不同的代碼達到規(guī)格化為止。5、舍入處理:就近舍入、朝0舍入。例:設x=2010*0.11011011,y=2100*(-0.10101100),求x+y。解:為便于直觀理解,假設兩數(shù)均以補碼表示,階碼采用雙符號位,尾數(shù)采用單符號位,則它們的浮點表示分別為[x]浮=00010,0.11011011[y]浮=00100,1.01010100(1)求階差并對階△E=Ex-Ey=[Ex]補+[-Ey]補=00010+11100=11110即△E為-2,x的階碼小,應使Mx右移2位,Ex加2,[x]浮=00夸100,0.00110110(11)其中(11)表示Mx右移2位后移出的最低兩位數(shù)。(2)尾數(shù)求和0.00110110(11)+1.01010100─────────────1.10001010(11)(3)規(guī)格化處理:尾數(shù)運算結果的符號位與最高數(shù)值位為同值,應執(zhí)行左規(guī)處理,結果為1.00010101(10),階碼為00011。

(4)舍入處理采用0舍1入法處理,則有1.00010101+1───────────1.00010110(5)判溢出階碼符號位為00,不溢出,故得最終結果為x+y=2011*(-0.11101010)二、浮點乘除法運算:1、運算規(guī)則:2、運算步驟:(1)0操作數(shù)檢查;(2)階碼加/減操作;(3)尾數(shù)乘/除操作;(4)結果規(guī)格化及舍入處理。[X]移=2n+x2n>x≥-2n[x+y]移=[X]移+[y]補[x-y]移=[X]移+[-y]補當階碼的結果溢出時,須使用雙符號位的階碼加法器,并規(guī)定移碼的第二個符號位,即最高符號位恒用0參加加減運算,則溢出條件是結果的最高符號位為1。此時,當?shù)臀环栁粸?時,表明結果上溢;為1時,表明結果下溢。當最高符號位為0時,表明沒有溢出;低位符號位為1,表明結果為正;為0時,表明結果為負。

例26:x=+011,y=+110,求[x+y]移和[x-y]移,并判斷是否溢出。解:[X]移=01011,[y]補=00110,[-y]補=11010,[x+y]移=[X]移+[y]補=10001,結果上溢。

[x-y]移=[X]移+[-y]補=00101,結果正確,為-3。例28:設有浮點數(shù)x=2-5×0.0110011,y=23×(-0.1110010),階碼用4位移碼表示,尾數(shù)(含符號位)用8位補碼表示,求[x×y]浮。要求用補碼完成尾數(shù)乘法運算,運算結果尾數(shù)保留高8位(含符號位),并用尾數(shù)低位字長的值處理舍入操作。解:移碼采用雙符號位,尾數(shù)補碼采用單符號位,則有[Mx]補=0.0110011,[My]補=1.0001110,[Ey]移=01011,[Ey]補=00011,[Ex]移=00011,

[X]浮=01011,0.0110011,[y]浮=11011,1.0001110(1)求附中碼和

[Ex+Ey]移=[Ex]移+[Ey]補=00011+00011=00110,值為移碼形式-2。(2)尾數(shù)乘法運算可采用補碼列乘法器實現(xiàn),即有[Mx]補×

[My]補=[0.0110011]補×[1.0001110]補

=[1.1010010,1001010]補(3)規(guī)格化處理乘積的

溫馨提示

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

評論

0/150

提交評論