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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

X0

X1X2...Xn-1

Xn

符號(hào)

量值(尾數(shù))

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

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

0≤|X|≤2n-1

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

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

階符

階碼

數(shù)符

尾數(shù)

EsE1E2...Em

MsM1M2...Mn313023220IEEE標(biāo)準(zhǔn):

32位浮點(diǎn)數(shù)

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

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

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

e=E-127

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

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

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

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

解:將16進(jìn)制數(shù)展開后,可得二進(jìn)制數(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]將十進(jìn)制數(shù)20.59375轉(zhuǎn)換成32位浮點(diǎn)數(shù)的二進(jìn)制格式來(lái)存儲(chǔ)。

解:首先分別將整數(shù)和分?jǐn)?shù)部分轉(zhuǎn)換成二進(jìn)制數(shù):

20.59375=10100.10011

然后移動(dòng)小數(shù)點(diǎn),使其在第1,2位之間

10100.10011=1.010010011*24

e=4

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

M=010010011

最后得到32位浮點(diǎn)數(shù)的二進(jìn)制存儲(chǔ)格式為:

01000001101001001100000000000000=(41A4C000)16

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

M(11110001101101100000000000000000)2

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

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

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

[X]原=X

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

0≥X>-1

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

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

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

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

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

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

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

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

[+0]原=0.0000...0

[-0]原=1.0000...0

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

[X]原=X

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

0≥X>-2n2)

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

[X]補(bǔ)=X

1>X≥0[X]補(bǔ)=2+X=2-|X|

0≥X>-1

(mod2)

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

例如,X=+0.1011,則[X]補(bǔ)=0.1011

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

[X]補(bǔ)=0.x1x2...xn

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

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

對(duì)于0,在補(bǔ)碼情況下,[+0]補(bǔ)=[-0]補(bǔ)=0.0000

(mod2)

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

對(duì)于定點(diǎn)整數(shù),補(bǔ)碼表示的定義是:

[X]補(bǔ)=X

2n>X≥0

[X]補(bǔ)=2n+1+X=2n+1-|X|

0≥X>-2n

(mod

2n+1)3)

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

對(duì)定點(diǎn)小數(shù),反碼表示的定義為

[X]反=X

1>X≥0

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

0≥X>-1

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

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

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

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

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

對(duì)于0,有[+0]反=[-0]反之分:

[+0]反=0.00...0

[-0]反=1.11...1

我們比較反碼與補(bǔ)碼的公式

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

[X]補(bǔ)=2+X

可得到

[X]補(bǔ)=[X]反+2-n

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

對(duì)定點(diǎn)整數(shù),反碼表示的定義是

[X]反=X

2n>X≥0

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

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

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

[X]移=2n+X

,

2n>X≥-2n

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

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

[X]移=25+X

,

25>X≥-25

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

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

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

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

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

解:原碼、反碼、補(bǔ)碼表示分別示于下圖。與原碼、反碼不同,在補(bǔ)碼表示中“0”只有一種形式,且用補(bǔ)碼表示負(fù)數(shù)時(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)

補(bǔ)碼

[例4]設(shè)機(jī)器字長(zhǎng)16位,定點(diǎn)表示,尾數(shù)15位,數(shù)符1位,問(wèn):

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

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

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

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

0

111111111111111

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

1

111111111111111

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

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

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

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

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

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

解:

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

11111111

11111111111111111111111

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

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

00000000

00000000000000000000000

X=1.0*2-128

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

11111111

11111111111111111111111

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

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

00000000

00000000000000000000000

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

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

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

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

1011001

奇校驗(yàn)碼10110011偶校驗(yàn)碼

10110010例2:有效信息

1011011

奇校驗(yàn)碼10110110偶校驗(yàn)碼

10110111

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

2.2定點(diǎn)加法減法運(yùn)算一、補(bǔ)碼加法公式:[X]補(bǔ)+[Y]補(bǔ)=[X+Y]補(bǔ)(mod2)

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

解:

[x]補(bǔ)=0.1001

[y]補(bǔ)=0.0101

[x]補(bǔ)

0.1001

+

[y]補(bǔ)

0.0101

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

[x+y]補(bǔ)

0.1110

所以

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

解:

[x]補(bǔ)=0.1011

[y]補(bǔ)=1.1011

[x]補(bǔ)

0.1011

+

[y]補(bǔ)

1.1011

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

[x+y]補(bǔ)

1

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

所以

x+y=+0.0110進(jìn)位要丟掉)二、補(bǔ)碼減法公式:[x-y]補(bǔ)=[x]補(bǔ)

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

解:

[x1]補(bǔ)=1.0010

[-x1]補(bǔ)=→[x1]補(bǔ)+2-4=0.1101+0.0001=0.1110

[x2]補(bǔ)=0.1101

[-x2]補(bǔ)=→[x2]補(bǔ)+2-4=1.0010+0.0001=1.0011(符號(hào)→表示對(duì)[x1]補(bǔ)作包括符號(hào)位在內(nèi)的求反操作)

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

解:

[x]補(bǔ)=0.1101

[y]補(bǔ)=0.0110

[-y]補(bǔ)=1.1010

[x]補(bǔ)

0.1101

+

[-y]補(bǔ)

1.1010

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

[x-y]補(bǔ)

1

0.0111

所以

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

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

解:

[x]補(bǔ)=0.1011

[y]補(bǔ)=0.1001

[x]補(bǔ)

0.1011

+

[y]補(bǔ)

0.1001

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

[x+y]補(bǔ)

1.0100

兩個(gè)正數(shù)相加的結(jié)果成為負(fù)數(shù),這顯然是錯(cuò)誤的。

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

解:

[x]補(bǔ)=1.0011

[y]補(bǔ)=1.0101

[x]補(bǔ)

1.0011

+

[y]補(bǔ)

1.0101

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

[x+y]補(bǔ)

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

:發(fā)生錯(cuò)誤的原因,是因?yàn)檫\(yùn)算結(jié)果產(chǎn)生了溢出。兩個(gè)正數(shù)相加,結(jié)果大于機(jī)器所能表示的最大正數(shù),稱為上溢。而兩個(gè)負(fù)數(shù)相加,結(jié)果小于機(jī)器所能表示的最小負(fù)數(shù),稱為下溢。

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

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

[x]補(bǔ)=x

當(dāng)2>x≥0

[x]補(bǔ)=4+x

當(dāng)0>x≥-2

或用同余式表示為:

[x]補(bǔ)=4+x

(mod4)

下式也同樣成立:

[x]補(bǔ)+[y]補(bǔ)=[x+y]補(bǔ)

(mod4)

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

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

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

解:

[x]補(bǔ)=00.1100

[y]補(bǔ)=00.1000

[x]補(bǔ)

00.1100

+

[y]補(bǔ)

00.1000

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

01.1000

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

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

解:

[x]補(bǔ)=11.0100

[y]補(bǔ)=11.1000

[x]補(bǔ)

11.0100

+

[y]補(bǔ)

11.1000

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

10.1100

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

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

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

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

第二種溢出檢測(cè)方法:是采用單符號(hào)位法。當(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)生下溢。故溢出邏輯表達(dá)式為V=CfC0,其中Cf為符號(hào)位產(chǎn)生的進(jìn)位,C0為最高有益位產(chǎn)生的進(jìn)位。此邏輯表達(dá)式可用異或門實(shí)現(xiàn)。

在定點(diǎn)機(jī)中,當(dāng)運(yùn)算結(jié)果發(fā)生溢出時(shí),機(jī)器通過(guò)邏輯電路自動(dòng)檢查出這種溢出,并進(jìn)行中斷處理。四、基本的二進(jìn)制加法/減法器:

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

N位行波進(jìn)位加法/減法器:

進(jìn)位處理方式:串行進(jìn)位(行波進(jìn)位)、并行進(jìn)位五、十進(jìn)制加法器十進(jìn)制加法/減法器見圖2.3六、定點(diǎn)乘法運(yùn)算:設(shè)n位被乘數(shù)和乘數(shù)用定點(diǎn)小數(shù)表示為(定點(diǎn)整數(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ù)符號(hào),Y1為乘數(shù)符號(hào)。乘積符號(hào)的運(yùn)算法則是:同號(hào)相乘為正,異號(hào)相乘為負(fù)。由于被乘數(shù)和乘數(shù)的符號(hào)組合只有四種情況(Xf.Yf=00,01,10,11),因此積的符號(hào)可按“異或”運(yùn)算得到。

例:

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

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

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

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

[x]原=01111

[y]原=11101

因符號(hào)單獨(dú)考慮,算前求補(bǔ)器輸出后,|X|=1111,|y|=1101

1111

×

1101

符號(hào)位運(yùn)算:01=1

──────

1111

0000

1111

+

1111

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

11000011

算后求補(bǔ)器輸出為11000011,加上乘積符號(hào)位1,得

[x*y]原=111000011

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

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

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

[x]補(bǔ)=01111

[y]補(bǔ)=10011

乘積符號(hào)位運(yùn)算:X0Y0=01=1表示乘積為負(fù)的。算前求補(bǔ)器輸出為|X|=1111,|y|=1101

1111

×

1101

──────

1111

0000

1111

+

1111

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

11000011

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

:[x*y]補(bǔ)=

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

十進(jìn)制數(shù)乘法驗(yàn)證:X*Y=15*(-13)=-1952.4定點(diǎn)除法一、原碼除法算法原理:兩個(gè)原碼表示的數(shù)相除時(shí),商的符號(hào)由兩數(shù)的符號(hào)按位相加求得,商的數(shù)值部分由兩數(shù)的數(shù)值部分相除求得。設(shè)有n位定點(diǎ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è)被除數(shù)x=0.1001,除數(shù)y=0.1011,手算求x÷y的過(guò)程:

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.

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

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

1.001(相當(dāng)于加[-y]補(bǔ))余數(shù)為負(fù)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)三、定點(diǎn)運(yùn)算器組成:工作方式選擇輸入S3S2S1S0

負(fù)邏輯輸入與輸出正邏輯輸入與輸出邏輯M=H算術(shù)運(yùn)算M=LCn=L邏輯M=H算術(shù)運(yùn)算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說(shuō)明:(1)H=高電平1,L=低電平0,(2)*表示每一位均移到下一個(gè)更高位,即A*

=2A。

多功能74181ALU算術(shù)/邏輯運(yùn)算功能表

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

4、結(jié)果規(guī)格化:當(dāng)尾數(shù)求和的結(jié)果為01.x…x或10.x…x,即兩符號(hào)位不相等,此時(shí)將尾數(shù)結(jié)果右移以實(shí)現(xiàn)規(guī)格化,簡(jiǎn)稱右規(guī),即尾數(shù)右移1位,階碼加1。否則進(jìn)行左規(guī)處理,即尾數(shù)每左移1位,階碼減1,直到尾數(shù)的符號(hào)和最高有效位具有不同的代碼達(dá)到規(guī)格化為止。5、舍入處理:就近舍入、朝0舍入。例:設(shè)x=2010*0.11011011,y=2100*(-0.10101100),求x+y。解:為便于直觀理解,假設(shè)兩數(shù)均以補(bǔ)碼表示,階碼采用雙符號(hào)位,尾數(shù)采用單符號(hào)位,則它們的浮點(diǎn)表示分別為[x]浮=00010,0.11011011[y]浮=00100,1.01010100(1)求階差并對(duì)階△E=Ex-Ey=[Ex]補(bǔ)+[-Ey]補(bǔ)=00010+11100=11110即△E為-2,x的階碼小,應(yīng)使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ù)運(yùn)算結(jié)果的符號(hào)位與最高數(shù)值位為同值,應(yīng)執(zhí)行左規(guī)處理,結(jié)果為1.00010101(10),階碼為00011。

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

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

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

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

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

[My]補(bǔ)=[0.0110011]補(bǔ)×[1.0001110]補(bǔ)

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

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論