第四章 運算方法與運算器_第1頁
第四章 運算方法與運算器_第2頁
第四章 運算方法與運算器_第3頁
第四章 運算方法與運算器_第4頁
第四章 運算方法與運算器_第5頁
已閱讀5頁,還剩117頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

計算機組成原理與系統(tǒng)結(jié)構(gòu)

QY第4章運算方法與運算器

?定點數(shù)的加減運算及實現(xiàn)

會定點數(shù)的乘法運算及實現(xiàn)

傘定點數(shù)除法運算及實現(xiàn)」

■定點運算器的組成與結(jié)構(gòu)

?浮點運算及運算器

■浮點運算器舉例

BACK

4.1定點數(shù)的加減運算及實現(xiàn)

補碼加減運算與運算器

機器數(shù)的移位運算

移碼加減運算與判溢

U!十進制加法運算

QY一、?補碼加減運算與運算器

0補碼加減運算方法

6補碼加減運算的溢出判斷

補碼加減運算器的實現(xiàn)

、補碼加減運算方法

?:?補碼的加減運算的公式是:

[X+Y]補=[X]補+[丫]補

[X-Y]補=[X]補+[-丫1補

*華寺點:

■雇用補碼進行加減運算,符號位和數(shù)值位一樣參

加運算。

■補碼的減法可以用加法來實現(xiàn),任意兩數(shù)之差的

補碼等于被減數(shù)的補碼與減數(shù)相反數(shù)的補碼之和。

5

6求補運算:[Y]補一[一丫]補

?:?求補規(guī)則:將[Y]補包括符號位在內(nèi)每一位取反,末

位加1。

?:?若[Y]補=YO,Y1……Yn,則:

TO補=丫0丫1……Yn+1

?若[Y]補=YO.Y1...Yn,貝I]:

[-Y]補=Y。Yi……Yn+0.0……01

中例:[X]補=0.1101,則:[-X]#=10011

金[Y]補=1.1101,貝心[一丫]補=0.0011

6

?:?例:已知X=+10W,Y=-0100,用補碼計算X+Y和X-Y。

■寫出補碼:

[X]補=0,1011[Y]^=1,1100

[-丫]補=0,0100

■計舁:

0,1011091011

+1,1100+0,0100

0,0111091111

[X+Y[b=0,0111[X—Y]補=0,1111

?

2、補碼加減運算的溢出判斷

?:?當(dāng)運算結(jié)果超出機器數(shù)的表示范圍時,稱為溢出。計

算機必須具備檢測運算結(jié)果是否發(fā)生溢出的能力,否

則會得到錯誤的結(jié)果。

?:?對于加減運算,可能發(fā)生溢出的情況:同號(兩數(shù))

相加,或者異號(兩數(shù))相減。

?:?確定發(fā)生溢出的情況:

■正數(shù)相加,且結(jié)果符號位為1;

-負(fù)數(shù)相加,且結(jié)果符號位為0;

■正數(shù)一負(fù)數(shù),且結(jié)果符號位為1;

■負(fù)數(shù)一正數(shù),且結(jié)果符號位為0;

8

常用的判溢方法(補碼加減運算)

?:?(1)單符號位判溢方法2

■當(dāng)最高有效位產(chǎn)生的進位和符號位產(chǎn)生的進位不

同時,加減運算發(fā)生了溢出。

■V=C1十4

(2)雙符號位判溢方法

■X和Y采用雙符號位補碼參加運算,正數(shù)的雙符號

位為00,負(fù)數(shù)的雙符號位為11;當(dāng)運算結(jié)果的兩

位符號Sf2不同時(01或10),發(fā)生溢出。

■V=Sf1?Sf2=Xf十丫千十Cf十Sf

■Sf1Sf2=01,則正溢出;Sf1Sf2=10,則負(fù)溢出。

9

雙符號位判溢方法舉例

?:?例:用補碼計算X+Y和X-Y

■(1)X=+1000,Y=+1001

■(2)X=-1000,Y=1001

兇補00,1000兇補00,1000

+[Y]補00,1001+[?Y]補11,0111

[X+Y]補01,0001[X-YJ411,1111

=

SfiSf2015JE■溢出Sf1Sf2=11?無溢出

兇補11,1000pq補11,iooo

?[Y]補00,1001+[?Y]補11,0111

[X+Y]補00,0001[X-Y]#10,1111

負(fù)溢出

Sf1Sf2=00,無溢出Sf1Sf2=10,

10

3、補碼加減運算器

3、補碼加減運算器的實現(xiàn)

?:?核心部件:一個普通的二進制并行加法器。

?A:累加器,存放[X]補;B:寄存器,存放[Y]補;

?:?取反電路:

*3,SUB=。時,補碼加法器,將B寄存器直接送入并

行加法器;_

*■/SUB=1時,補碼減法器,4匏送入并行加法器,

同時,并行加法器的最低位產(chǎn)生進位,即B取反加1,

此時并行加法器的運算相當(dāng)于[A]補力口[-B]補,完成減

法運算。

12

、機器數(shù)的移位運算

?:?二進制數(shù)據(jù)(真值)每相對于小數(shù)點左移一位,相當(dāng)

于乘以2;每相對于小數(shù)點右移一位,相當(dāng)于除以2。

?:?計算機中的移位運算分為:

?1、邏輯移位:將移位的數(shù)據(jù)視為無符號數(shù)據(jù),各

數(shù)據(jù)位在位置上發(fā)生了變化,導(dǎo)致無符號數(shù)據(jù)的數(shù)

值(無正負(fù))放大或縮小。

■2、算術(shù)移位:將移位的數(shù)據(jù)視為帶符號數(shù)據(jù)(機

器數(shù))。算術(shù)移位的結(jié)果,在數(shù)值的絕對值上進行

放大或縮小,同時,符號位必須要保持不變。

■3、循環(huán)移位:所有的數(shù)據(jù)位在自身范圍內(nèi)進行左

移或者右移,左移時最高位移入最低位,右移時最

低位移入最高位。

13

QY補碼的算術(shù)移位

?:?算術(shù)左移:符號位不變,高位移出,低位補0。

■為保證補碼算術(shù)左移時不發(fā)生溢出,移位的數(shù)據(jù)

最高有效位必須與符號位相同。

■在不發(fā)生溢出的前提下,用硬件實現(xiàn)補碼的算術(shù)

左移時,直接將數(shù)據(jù)最高有效位移入符號位,不

會改變機器數(shù)的符號。

?:?算術(shù)右移:符號位不變,低位移出,高位正數(shù)補0,

負(fù)數(shù)補1,即高位補符號位。

符號位

fXf-----?X1X2--------?Xn----?

符號位

QY補碼的算術(shù)移位舉例

?:?例:設(shè)X=0.1001,丫=—0.0101,求

■伏]補=0.1001

■[2x1補=1.0010(溢出)

■[X/21補=0.0100

■[丫]補=1.1011

[2丫1補=1.0110

■[Y/2]補=LUOI

?

QY三、移碼加減運算與判溢

篇碼和盜碼葉管

n

[X]移+[¥]移=2葉X+2+Y=2葉(2n+X+Y)=2n+[X+Y]移

n

[X]移+[-Y]移=2+[X—Y]移[X-Y]移=[X]移+[一Y]抖(mod2前)

?:?移碼和補碼混合計算

nn+1

[X]移+[Y]科=2葉X+”+i+Y="*+(2+X+Y)=2n+】+[X+Y]移=[X+Y]移(mod2)

n+1

[X-Y]移=[耳夠+[—Y]科(mod2)

?:?移碼運算結(jié)果判溢:

0XfXix2.......xn

+YfYfYi丫2……Yn

SfiSf2Sis2……sn

16

移碼加減運算與判溢

移碼運算結(jié)果溢出的判斷條件是:

■當(dāng)結(jié)果的最高符號位Sf1二1時溢出,Sf1=0時結(jié)果

正確。

?Sf1Sf2=10時,結(jié)果正溢出;

?Sf1Sf2=W時,結(jié)果負(fù)溢出。

■由于移碼運算用于浮點數(shù)的階碼,當(dāng)運算結(jié)果正

溢出時,浮點數(shù)上溢;當(dāng)運算結(jié)果負(fù)溢出時,浮

點數(shù)下溢,當(dāng)作機器零處理。

17

四、十進制加法運算

?:?計算機中的十進制加法器通常采用BCD碼設(shè)計,在二

進制加法器的基礎(chǔ)上,加上適當(dāng)?shù)男U娐?,可以?/p>

現(xiàn)BCD碼的加法器。

?:?對于8421BCD碼來說,當(dāng)相加的兩數(shù)之和S>9時,力口6

校正;當(dāng)SW9時,且無進位時,結(jié)果正確,不需校正。

18

4.2定點數(shù)的乘法運算及實現(xiàn)

原碼乘法及實現(xiàn)

補碼乘法及實現(xiàn)

陣列乘法器

一、原碼乘法及實現(xiàn)

?:?由于計算機的軟硬件在邏輯上具有一定的等價性,因

此實現(xiàn)乘除法運算,可以有三種方式:

?I.用軟件實現(xiàn)。

■硬件上:設(shè)計簡單,沒有乘法器和除法器。

■指令系統(tǒng):沒有乘除指令,但有加/減法和移位指

■實現(xiàn):乘除運算通過編制一段子程序來實現(xiàn)

■算法:程序中運用串行乘除運算算法,循環(huán)累加、

右移指令一乘法,循環(huán)減、左移指令一除法。

■運算速度:較慢。

■適用場合:單片機。

20

一、原碼乘法及實現(xiàn)

on.用硬件乘法器和除法器實現(xiàn)。

■硬件上:設(shè)置有并行加法器、移位器和若干循環(huán)、

計數(shù)控制邏輯電路搭成的串行乘除法器。

■指令系統(tǒng):具有乘除法指令。

■實現(xiàn):乘除運算通過微程序一級(硬件+微程序)

來實現(xiàn)。

■算法:在微程序中依據(jù)串行乘除運算算法,循環(huán)累

力口、右移指令一乘法,循環(huán)減、左移指令一除法。

■運算速度:有所提高,但硬件設(shè)計也相對復(fù)雜。

■適用場合:低性能CPU。

21

一、原碼乘法及實現(xiàn)

?III.用高速的陣列乘法器和陣列除法器來實現(xiàn)。

■硬件上:設(shè)置有專用的、并行運算的陣列乘法器和

陣列除法器。

■指令系統(tǒng):具有乘除法指令。

■實現(xiàn):完全通過硬件來實現(xiàn)。

■算法:并行乘/除法。

■運算速度:很快,但硬件設(shè)計相當(dāng)復(fù)雜。

■適用場合:高性能CPU。

22

原碼乘法及實現(xiàn)

*1、手工乘法算法

■手工計算1011X1101,步驟:1011

■手工算法:對應(yīng)每1位乘數(shù)求得1項位

積,并將位積逐位左移,然后將所有X1101

的位積一次相加,得到最后的乘積。~~WH

■乘法的機器算法:從乘數(shù)的最低位開

始,每次根據(jù)乘數(shù)位得到其位積,乘0000

數(shù)位為0,位積為0,乘數(shù)位為1,則

位積為被乘數(shù);用原部分積右移1位1011

加上本次位積,得新部分積;初始部

分積為0。1011

10001111

23

QY二、原碼乘法算法

?:*2、原碼一位乘法算法:

假設(shè)[X]原=XsX1X2.......Xn,[Y]原二YsY1

Y2……Yn,P=X-Y,Ps是積的符號:

■符號位單獨處理ps=Xs十Ys

?絕對值進行數(shù)值運算|P|二|X|*|Y|

?:?例如:X=+1011,Y=-1101,用原碼一位乘法計算

P=X'YO

QY舉例

部分積乘數(shù)Y操作說明

■[X]原二0,1011O,000011O1

?[Y]原=1,1101

+O,1011V4=l,+IX|

■Ps二Xs十Ys

O,1011

=0?1=1

右移—位

■|P|二|X|-|Y|O,0101111O

十O,0000V3=0,+0

O,0101

O,OO1O1111右移一位

+0,1011Y2=l,+|x|

O,1101

[P]原=L10001111

O,01101111右移—位

+0,1011V1=1,+Ix|

0001

0,1000右移一位

QH—、原碼乘法及實現(xiàn)

3、原碼乘法的硬件實現(xiàn)

000001101

27

gY第一次求部分積加運算:+兇000001101

010111101

28

000001101

01011E1101

001011110

29

000001101

010111101

001011110

001011110

30

01011

01011

01011

01011

符號位異或

01011結(jié)果為:1,1000111

開始

原碼一位乘法流程

結(jié)束

36

補碼乘法及實現(xiàn)

1、補碼乘法算法

(1)補碼一位乘法——校正法

假設(shè)[X]補=Xo.X1,

[丫]補=丫。4……I,

則有:

[X?Y]補二[知補?(0.Y1……YQ+Y°?[—X]補

37

補碼乘法及實現(xiàn)

證明如下:

■當(dāng)被乘數(shù)X的符號任意,Y為正數(shù)時:

根據(jù)補碼定義有:

[X]補=2+X=2n+1+X(mod2)

[Y]補二Y

則:

[X]補?[Y]補=(2田+X)-Y=2田?丫+X-Y

=2n+i?(0.丫1.......Yn)+X?Y

=2-(丫1.......Yn)+X?Y=2+X-Y(mod2)

=[X?Y]補

即:Y>0時,[X?Y]補二[X]補?[Y]補

二兇補?”……Yn)

38

補碼乘法及實現(xiàn)

■當(dāng)被乘數(shù)X的符號任意,Y為負(fù)數(shù)時:

[Y]補=2+Y=1.丫1……Y”則:

丫=[Y]補一2=0.Y1……Yn-1

[X?Y]補二[X。丫1?????,Yn-X]補

=[X”……Yn]補+[-X]補

因為0.丫1......Yn>0,所以:

[X”……Yn]補=[X]補?”……Yn)

所以:Y<0時,

[X?Y]補二兇補?(0.1?????.Yn)+[—X]補

39

Q<二、補碼乘法及實現(xiàn)

例如:X=+0.1011,Y=-0.1101,用補碼一位乘法的校正法計算P二XV。

[X]補=00.1011[Y]^1=11.0011[-X]^1=11.0101

部分積乘數(shù)Y操作說明

00.00000011

+00.1011Y4=l,+[X]補

00.1011

00.01011001_右移一位

+00.1011Y3=l,+[X]補

01.0000

00.10000100右移一,位

+00.0000Y2=0,+0[X-Y]^=1.01110001

00.1000

00.01000010右移一位X-Y=-0.10001111

+00.0000Yi=O,+0

00.0100

00.00100001右移一位

+11.0101Vo=i,+[—X]補校lE

11.01110001

例:設(shè)X=—0.1101,Y二一0.1011,即:兇補二11.0011,[Y]補=11.0101,求[X*Y]補

部分積乘數(shù)說明

00.00000101初始值

+[X]補11.0011+[X]補

11.0011—

右移一位11.1001]C1o右移—M立

+000.0000+0

11.1001—

右移一位1L1100]01右移—位

+[X]補11.0011+DG補

10.1111

右移一位11.0111111o右移--位

+000.0000+0

11.0111

右移一位

右移一位11.101111111

+「—X〕補00.1I01+[-X]補

00.10001111

計算結(jié)果:[X*Y]補=0.10001111

補碼乘法及實現(xiàn)

?(2)補碼一位乘法----Booth算法

做出如下推導(dǎo):

[X?Y]補二蟲]補?(O.Yi……Yn)+Y°?[—X]補

=兇補?(丫/2一1+丫2?2-2++Y/2-n-Yo)

=[X]補?[Y/(2°-2-1)+Y2-(2-1-2-2)+.......+Yn-(2一村-

2-n)-Y0-20]

二補?[丫。-丫12n+1

[X]*p|1I?21I?2-1+YZ./2--Yz_/2-+.......+Yr'i2--Yr-i2-

n-Y0'20]

二兇補?[(丫廠丫。)?20+(Y2-丫1)?2-1+(Y3-Y2)?2一2+……+

(Yn-YQ51-YQ]

二[X]補?[(丫廣丫。)?2。+(Y2-YP?2-1+(Y3-丫2)?2一2+……+

(丫廣丫田)-2一,十(丫叼-Yn)-2-],0

-12n

=兇補?(a0-2°+a/2+a2-2^千二…++an-2-)

其中,將乘數(shù)Y的補碼在最末位添加一位附加位丫.

(初始為0),aLYj+「Yj,i=0,1,…??.,n-1,n。.

42

Booth算法的運算規(guī)則

假設(shè)[Y]補=Y0,Y1……Yn

①被乘數(shù)X和乘數(shù)Y均以補碼的形式參加乘法運算,運算

的結(jié)果是積的補碼。

②部分積和被乘數(shù)X采用雙符號位,乘數(shù)丫采用單符號位。

③初始部分積為0;運算前,在乘數(shù)丫的補碼末位后添加

一位附加位Yn+1,初始為0。

④根據(jù)YnYn+1的值,按照表4.3進行累加右移操作,右移

時遵循補碼的移位規(guī)則。

⑤累加n+1次,右移n次,即最后一次不右移。

|表43補碼乘法的Booth算法操作表

*操作,

0-lj.+0,右移一位,,

1+[閩斗,右移一位2

b山+[-X]中右移一位,

1-1+0?右移一位c

43

例如:X=+0.1011,Y=-0.1101,用補碼一位乘法的Booth算法計算P二XV。

解:[X]補=00.1011[Y]^=11.0011[-X]^=11.0101

部分積乘數(shù)Y(丫口丫…)操作說叨

00.00001.0011_0

+

11.0101Y4Y5=10,+[—X]補

11.0101

11.101011.0011右移一位

[X-Y]補=1.01110001

十00.0000Y3Y4=11,+0

11.1010

X-Y=-0.10001111

11.1101011.001右移一位

十00.1011丫2丫3=。1.+[X]補

00.1000

00.0100001100右移一位

+00.0000

YiV2=00,-+-0

00.0100

00.0010D0011,0右移一位

4-11.0101Y°Y『10,+E-x]補

11.01110001

二、補碼乘法及實現(xiàn)

2、補碼乘法的硬件實現(xiàn)

46

陣列乘法器

孝原理類似于二進制手工算法

■位積的每一位XiYj都可以用一個與門實現(xiàn),而每

位的相加均可以使用一個全加器來實現(xiàn)。

XXXX

1234

XYYYY

1234_______

XYXYXYXY

14243444

XYXYXYXY

13233343

XYXYXYXY

12223242

+XYXYXYXY

11213141

PPPPPPPP

12345678

47

絕對值陣列乘法器

48

補碼陣列乘法器

補碼求絕對值電路

先通過一個補碼求絕對值的邏輯電路變?yōu)榻^對值后,

送入絕對值陣列乘法器,運算得到積的絕對值,然后

再通過一個絕對值求補碼的邏輯電路,根據(jù)積的符號

求出積的補碼形式。

49

補碼陣列乘法器

50

4.3定點數(shù)除法運算及實現(xiàn)

原碼除法及實現(xiàn)

補碼除法及實現(xiàn)

陣列除法器

QH—、原碼除法及實現(xiàn)

1、原碼除法算法

?:?(D手工除法算法0.1101

■改進手工算法即可適合機器運算:0.1101]0,10110

■計算機通過做減法測試來實現(xiàn)1101

判斷:結(jié)果大于等于表明夠

0,10010

減,曲1;結(jié)果小于0,表明不

夠減,商0。1101

■計算機將余數(shù)左移一位,再直10100

接與不右移的除數(shù)相減。1101

X=+0.1011,Y=-0.11010111

X+Y

52

一、原碼除法及實現(xiàn)

?(2)原碼恢復(fù)余數(shù)算法

假設(shè)[X]原=Xs.X1X2.......Xn,[丫]原二丫$.丫1

Y2.......Yn,Q是X+Y的同,Qs是陶的符號,R是

X小丫的余數(shù),Rs是余數(shù)的符號

■原碼除法運算的規(guī)則是:

?1.Qs-Xs?Ys,Rs-Xs,|Q|-

|X|+|Y|-|R|+|Y|

?2.余數(shù)和被除數(shù)、除數(shù)均采用雙符號位;初

始余數(shù)為|X|。

53

一、原碼除法及實現(xiàn)

■原碼除法運算的規(guī)則是:

?3.每次用余數(shù)減去|Y|(通過加上[-|丫|]補來

實現(xiàn)),若結(jié)果的符號位為0,則夠減,上商

1,余數(shù)左移一位;若結(jié)果的符號位為1,則

不夠減,上商0,先加|丫卜1灰復(fù)余數(shù),然后余

數(shù)左移一位。

?4.循環(huán)操作步驟3,共做n+1次,最后一次不

左移,但若最后一次上商0,則必須+|丫卜詼復(fù)

余數(shù);若為定點小數(shù)除法,余數(shù)則為最后計

算得到的余數(shù)右移n位的值。

54

被除數(shù)/余數(shù)商Q操作說明

±1

00.10110000

+11.0011+[-IY|]補

例如:X=+0.1011,11.101100000R0<0,上商。

Y=-0.1101+00.1101+1Y|恢復(fù)余數(shù)

用原碼恢復(fù)余數(shù)算法計算00.1011

X+Y。

01.011O00000左移一位

解:[X]原=0.10。

+11.0011+[-IY|]補

1101

00.100100001_Ri>0,上商1

|X|=0.1011|Y|=0.1101

01.001000010左移一位

[-[丫|]補=11.0011

+11.0011+Y門補

G)S=Xg十丫s=Rg二0

00.010100011_R2>0,上商1

00.101000110—4立

得[Q]原=11101+11.0011+[-1Y]]補

11.110100110R<o,上商0

[R]原=0.000001113

+00.1101+1V|恢復(fù)余數(shù)

00.1010

01.010001100-4爻

+11.0011+[―IY門補

01101

00.0111R4>0,上商1

一、原碼除法及實現(xiàn)

?:?(3)原碼不恢復(fù)余數(shù)算法

-又稱為加減交替法:當(dāng)某一次求得的差值(余

數(shù)%)為負(fù)時,不是恢復(fù)它,而是繼續(xù)求下一位

商,但用加上除數(shù)(+|丫|)的辦法來取代

(-|Y|)操作,其他操作不變。

■其原理證明如下:

?在恢復(fù)余數(shù)除法中,若第iT次求商的余數(shù)

為RT,下一次求商的余數(shù)為用,貝八

R=2R.一|Y|

?如巢R/0,商的第i位上1,并執(zhí)行操作:

余數(shù)左移一位,再減|丫|,得以+1,貝%

Ri+1=2R-|Y|

56

一、原碼除法及實現(xiàn)

■如果RRO,商的第i位上0,并執(zhí)行操作:恢

復(fù)余數(shù)(+1丫|),將余數(shù)左移一位,再減|丫|,

得其過程可用公式表示如下:

Ri+1=2(&+|Y|)-|Y|=2Ri+2|Y|-|Y>2Ri+|Y|

■加減交替法的規(guī)則如下:

?余數(shù)為正時,商上1,求下一位商的辦法,是

余數(shù)左移一位,再減去除數(shù);

?當(dāng)余數(shù)為負(fù)時,商上0,求下一位商的辦法,

是余數(shù)左移一位,再加上除數(shù)。

?若最后一次上商為0,而又需得到正確余數(shù),

則在這最后一次仍需恢復(fù)余數(shù)。

57

被除數(shù)/余數(shù)商Q操作說明

00.10110000

例如:X=+0.1011,

Y=-0.1101,用原碼不+11.0011+[-1Y]]補

恢復(fù)余數(shù)算法計算11.111000000R0<0,上商。

X+Y。11.110000000左—Y立

解:原

[X]=0.1011+00.1101+1Y|

[Y]原=1.1101

00.10010000工Ri>0,上商1

|X|=0,1011

|Y|=0.110101.001000010左—Y立

[-|Y|]補=11.0011+11.0011+[-1Y□補

00.01010001

Qs二Xs十Ys-11R2>0,上商1

RS二000.101000110左移一位

+11.0011+[-1Y]]補

11.110100110R3<O,上商。

[Q]原=1.1101

11.101001100左移一位

[R]原=0.00000111+00.1101+1Y|

00.011101101R4>0,上商1

QY—、原碼除法及實現(xiàn)

*2、原碼除法的硬件實現(xiàn)

A<|X|/余數(shù))Q(商IQI)Qn

7\

左移一位

緩沖骷

z\

QQ

Bi

計數(shù)器<斜>

并行加法器(n+2位)

=0

控制電路邏輯

7\7\n_n_n_

控制邏相:<>DIV

t

B(除數(shù)|Y|)

QY—、原碼除法及實現(xiàn)

原碼不恢復(fù)余數(shù)除法流程

計數(shù)器減1

補碼除法及實現(xiàn)

1、補碼除法算法

補碼不恢復(fù)余數(shù)除法的規(guī)則。假設(shè)[X]補=XS.X1

X2...Xn,[Y]補=YS.Y1Y2...Yn,Q是X+Y的

商,R是余數(shù),則補碼除法運算的規(guī)則是:

①X和Y以補碼形式參加除法運算,商也以補碼的形

式產(chǎn)生。余數(shù)和被除數(shù)、除數(shù)均采用雙符號位。

②當(dāng)[X]補與[Y]補同號時,第一次做兇補+[-丫]補操作,

當(dāng)異號時,第一次做[X]補+[Y]補操作,得到第一

次的部分余數(shù)[R0]補。

61

補碼除法及實現(xiàn)

補碼除法運算的規(guī)則是:

③當(dāng)[Ri]補與[丫]補同號時,上商1,然后余數(shù)先左移

一位,珈[-丫];、得到新余數(shù)[Ri+口補;當(dāng)[Ri]補與

[Y]補異號時,上商0,余數(shù)左移T立,力口[丫"卜得

到新余數(shù)[Ri+1]補。

④循環(huán)操作步驟③,共做n次,得到1位商符和(n-

1)位商的補碼數(shù)值位,最末位桌用恒置“1”法。

表4.4補碼除法的運算操作表

上商

[X]與[Y]商符第一次操作[K]與[Y]下一步操作

真值補碼

減法同號(夠減)11余數(shù)左移一位,+[-Y]

同號0

[X]+[-¥]異號(不夠減)00余數(shù)左移一位,+[Y]

加法同號(不夠減)01余數(shù)左移一位,+[-Y]

異號1

[X]+[¥]異號(夠減)10余數(shù)左移一位,+[Y]

62

補碼除法及實現(xiàn)

第二種方法的運算規(guī)則為:

①X和Y以補碼形式參加除法運算,商也以補碼的形

式產(chǎn)生。余數(shù)和被除數(shù)、除數(shù)均采用雙符號位。

部分余數(shù)初始為[X]補,即[R。]補=[X]補。

②當(dāng)[Ri]補與[丫]補同號時,上商1,然后余數(shù)先左移

一位,加[-丫]補得到新余數(shù)[Ri+口補;當(dāng)[Ri]補與

[Y]補異號時,上商0,余數(shù)左移一位,加[-丫]補得

到新余數(shù)[Ri+1]補。

③循環(huán)操作步驟②,共做n次,得到1位商符和(n-1

位商的補碼數(shù)值位,最末位采用恒置“1”法。

63

補碼除法及實現(xiàn)

X=+0.1011,Y=-0.1101,用補碼不恢復(fù)余數(shù)算法計算

X4-Yo

兇補二00.1011[丫]補二.0011[-Y],,=00.1101

第一種方法

溫馨提示

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

評論

0/150

提交評論