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

下載本文檔

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

文檔簡介

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

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

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

X0

X1X2...Xn-1

Xn

符號

量值(尾數)

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

如果數X表示的是純整數:

0≤|X|≤2n-1

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

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

階符

階碼

數符

尾數

EsE1E2...Em

MsM1M2...Mn313023220IEEE標準:

32位浮點數

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

一個規格化的32位浮點數x的真值可表示為:

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

e=E-127

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

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

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

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

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

0

1000001

001101100000000000000000

S

階碼(8位)

尾數(23位)

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

包括隱藏位1的尾數1.M=1.01101100000000000000000=1.011011

于是有

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

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

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

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

20.59375=10100.10011

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

10100.10011=1.010010011*24

e=4

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

M=010010011

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

01000001101001001100000000000000=(41A4C000)16

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

M(11110001101101100000000000000000)2

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

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

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

[X]原=X

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

0≥X>-1

式中[X]原是機器數,X是真值。

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

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

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

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

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

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

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

[+0]原=0.0000...0

[-0]原=1.0000...0

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

[X]原=X

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

0≥X>-2n2)

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

[X]補=X

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

0≥X>-1

(mod2)

式中[X]補為機器數,X為真值。

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

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

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

對于負數X=-0.x1x2...xn,則有:

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

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

(mod2)

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

對于定點整數,補碼表示的定義是:

[X]補=X

2n>X≥0

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

0≥X>-2n

(mod

2n+1)3)

反碼:將二進制數的各位數碼0變為1,1變為0。它是為計算補碼方便而引入.

對定點小數,反碼表示的定義為

[X]反=X

1>X≥0

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

0≥X>-1

其中n代表數的位數。

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

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

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

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

對定點整數,反碼表示的定義是

[X]反=X

2n>X≥0

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

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

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

[X]移=2n+X

,

2n>X≥-2n

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

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

[X]移=25+X

,

25>X≥-25

例如,當正數x=+10101時,[X]移=1,10101;當負數x=-10101時,[X]移=25+X=25-10101=0,01011。移碼中的逗號不是小數點,而是表示左邊一位是符號位。顯然,移碼中符號位x0表示的規律與原碼、補碼、反碼相反。一、計算: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位,采用定點整數表示,x=+110,求[x]原,[x]補解:因為n+1=5,所以n=4,[x]原=0,0110[x]補=0,0110↑↑↑x0x1…x4

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

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

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

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

解:原碼、反碼、補碼表示分別示于下圖。與原碼、反碼不同,在補碼表示中“0”只有一種形式,且用補碼表示負數時范圍可到-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位,定點表示,尾數15位,數符1位,問:

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

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

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

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

0

111111111111111

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

1

111111111111111

(2)定點原碼小數表示

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

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

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

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

問:它所表示的規格化的最大正數、最小正數、最大負數、最小負數是多少?

解:

(1)最大正數0

11111111

11111111111111111111111

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

(2)最小正數0

00000000

00000000000000000000000

X=1.0*2-128

(3)最小負數1

11111111

11111111111111111111111

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

(4)最大負數1

00000000

00000000000000000000000

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

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

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

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

1011001

奇校驗碼10110011偶校驗碼

10110010例2:有效信息

1011011

奇校驗碼10110110偶校驗碼

10110111

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

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三、溢出概念與檢測方法溢出概念:在定點小數機器中,數的表示范圍為|X|<1。在運算過程中如出現大于1的現象,稱為“溢出”。在定點機中,正常情況下是不允許的。

[例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

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

[例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兩個負數相加的結果成為正數,這同樣是錯誤的。[分析]

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

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

數的變形補碼定義為:

[x]補=x

當2>x≥0

[x]補=4+x

當0>x≥-2

或用同余式表示為:

[x]補=4+x

(mod4)

下式也同樣成立:

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

(mod4)

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

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

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

解:

[x]補=00.1100

[y]補=00.1000

[x]補

00.1100

+

[y]補

00.1000

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

01.1000

兩個符號位出現“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

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

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

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

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

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

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

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

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

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

乘積[Z]原=(XfYf)+(0.Xn-1…X1X0)(0.Yn-1…Y1Y0)式中,Xf為被乘數符號,Y1為乘數符號。乘積符號的運算法則是:同號相乘為正,異號相乘為負。由于被乘數和乘數的符號組合只有四種情況(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七、補碼與真值的轉換公式:對定點補碼整數[N]補=an-1an-2…a1a0,其中an-1是符號位,補碼整數[N]補與真值N的關系為:例:已知:[N]補=(01101)2,[-N]補=(10011)2,求[N]補和[-N]補具有的數值。解:[N]補=(01101)2具有的數值為:N=-0*24+1*23+1*22+0*21+1*20=(+13)10

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

解:設最高位為符號位,輸入數據為原碼:

[x]原=01111

[y]原=11101

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

1111

×

1101

符號位運算:01=1

──────

1111

0000

1111

+

1111

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

11000011

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

[x*y]原=111000011

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

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

解:設最高位為符號位,輸入數據用補碼表示:

[x]補=01111

[y]補=10011

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

1111

×

1101

──────

1111

0000

1111

+

1111

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

11000011

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

:[x*y]補=

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

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

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

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

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

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

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

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

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

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

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

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

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

4、結果規格化:當尾數求和的結果為01.x…x或10.x…x,即兩符號位不相等,此時將尾數結果右移以實現規格化,簡稱右規,即尾數右移1位,階碼加1。否則進行左規處理,即尾數每左移1位,階碼減1,直到尾數的符號和最高有效位具有不同的代碼達到規格化為止。5、舍入處理:就近舍入、朝0舍入。例:設x=2010*0.11011011,y=2100*(-0.10101100),求x+y。解:為便于直觀理解,假設兩數均以補碼表示,階碼采用雙符號位,尾數采用單符號位,則它們的浮點表示分別為[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位后移出的最低兩位數。(2)尾數求和0.00110110(11)+1.01010100─────────────1.10001010(11)(3)規格化處理:尾數運算結果的符號位與最高數值位為同值,應執行左規處理,結果為1.00010101(10),階碼為00011。

(4)舍入處理采用0舍1入法處理,則有1.00010101+1───────────1.00010110(5)判溢出階碼符號位為00,不溢出,故得最終結果為x+y=2011*(-0.11101010)二、浮點乘除法運算:1、運算規則:2、運算步驟:(1)0操作數檢查;(2)階碼加/減操作;(3)尾數乘/除操作;(4)結果規格化及舍入處理。[X]移=2n+x2n>x≥-2n[x+y]移=[X]移+[y]補[x-y]移=[X]移+[-y]補當階碼的結果溢出時,須使用雙符號位的階碼加法器,并規定移碼的第二個符號位,即最高符號位恒用0參加加減運算,則溢出條件是結果的最高符號位為1。此時,當低位符號位為0時,表明結果上溢;為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:設有浮點數x=2-5×0.0110011,y=23×(-0.1110010),階碼用4位移碼表示,尾數(含符號位)用8位補碼表示,求[x×y]浮。要求用補碼完成尾數乘法運算,運算結果尾數保留高8位(含符號位),并用尾數低位字長的值處理舍入操作。解:移碼采用雙符號位,尾數補碼采用單符號位,則有[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)尾數乘法運算可采用補碼列乘法器實現,即有[Mx]補×

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

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

溫馨提示

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

評論

0/150

提交評論