第四章 运算方法与运算器_第1页
第四章 运算方法与运算器_第2页
第四章 运算方法与运算器_第3页
第四章 运算方法与运算器_第4页
第四章 运算方法与运算器_第5页
已阅读5页,还剩117页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机组成原理与系统结构

QY第4章运算方法与运算器

♦定点数的加减运算及实现

会定点数的乘法运算及实现

伞定点数除法运算及实现」

■定点运算器的组成与结构

♦浮点运算及运算器

■浮点运算器举例

BACK

4.1定点数的加减运算及实现

补码加减运算与运算器

机器数的移位运算

移码加减运算与判溢

U!十进制加法运算

QY一、♦补码加减运算与运算器

0补码加减运算方法

6补码加减运算的溢出判断

补码加减运算器的实现

、补码加减运算方法

♦:♦补码的加减运算的公式是:

[X+Y]补=[X]补+[丫]补

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

*华寺点:

■雇用补码进行加减运算,符号位和数值位一样参

加运算。

■补码的减法可以用加法来实现,任意两数之差的

补码等于被减数的补码与减数相反数的补码之和。

5

6求补运算:[Y]补一[一丫]补

♦:♦求补规则:将[Y]补包括符号位在内每一位取反,末

位加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、补码加减运算的溢出判断

♦:♦当运算结果超出机器数的表示范围时,称为溢出。计

算机必须具备检测运算结果是否发生溢出的能力,否

则会得到错误的结果。

♦:♦对于加减运算,可能发生溢出的情况:同号(两数)

相加,或者异号(两数)相减。

♦:♦确定发生溢出的情况:

■正数相加,且结果符号位为1;

-负数相加,且结果符号位为0;

■正数一负数,且结果符号位为1;

■负数一正数,且结果符号位为0;

8

常用的判溢方法(补码加减运算)

♦:♦(1)单符号位判溢方法2

■当最高有效位产生的进位和符号位产生的进位不

同时,加减运算发生了溢出。

■V=C1㊉4

(2)双符号位判溢方法

■X和Y采用双符号位补码参加运算,正数的双符号

位为00,负数的双符号位为11;当运算结果的两

位符号Sf2不同时(01或10),发生溢出。

■V=Sf1®Sf2=Xf㊉丫千㊉Cf㊉Sf

■Sf1Sf2=01,则正溢出;Sf1Sf2=10,则负溢出。

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

负溢出

Sf1Sf2=00,无溢出Sf1Sf2=10,

10

3、补码加减运算器

3、补码加减运算器的实现

♦:♦核心部件:一个普通的二进制并行加法器。

❖A:累加器,存放[X]补;B:寄存器,存放[Y]补;

♦:♦取反电路:

*3,SUB=。时,补码加法器,将B寄存器直接送入并

行加法器;_

*■/SUB=1时,补码减法器,4匏送入并行加法器,

同时,并行加法器的最低位产生进位,即B取反加1,

此时并行加法器的运算相当于[A]补力口[-B]补,完成减

法运算。

12

、机器数的移位运算

♦:♦二进制数据(真值)每相对于小数点左移一位,相当

于乘以2;每相对于小数点右移一位,相当于除以2。

♦:♦计算机中的移位运算分为:

・1、逻辑移位:将移位的数据视为无符号数据,各

数据位在位置上发生了变化,导致无符号数据的数

值(无正负)放大或缩小。

■2、算术移位:将移位的数据视为带符号数据(机

器数)。算术移位的结果,在数值的绝对值上进行

放大或缩小,同时,符号位必须要保持不变。

■3、循环移位:所有的数据位在自身范围内进行左

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

低位移入最高位。

13

QY补码的算术移位

♦:♦算术左移:符号位不变,高位移出,低位补0。

■为保证补码算术左移时不发生溢出,移位的数据

最高有效位必须与符号位相同。

■在不发生溢出的前提下,用硬件实现补码的算术

左移时,直接将数据最高有效位移入符号位,不

会改变机器数的符号。

♦:♦算术右移:符号位不变,低位移出,高位正数补0,

负数补1,即高位补符号位。

符号位

fXf-----►X1X2--------►Xn----►

符号位

QY补码的算术移位举例

♦:♦例:设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)

♦:♦移码运算结果判溢:

0XfXix2.......xn

+YfYfYi丫2……Yn

SfiSf2Sis2……sn

16

移码加减运算与判溢

移码运算结果溢出的判断条件是:

■当结果的最高符号位Sf1二1时溢出,Sf1=0时结果

正确。

•Sf1Sf2=10时,结果正溢出;

•Sf1Sf2=W时,结果负溢出。

■由于移码运算用于浮点数的阶码,当运算结果正

溢出时,浮点数上溢;当运算结果负溢出时,浮

点数下溢,当作机器零处理。

17

四、十进制加法运算

♦:♦计算机中的十进制加法器通常采用BCD码设计,在二

进制加法器的基础上,加上适当的校正电路,可以实

现BCD码的加法器。

♦:♦对于8421BCD码来说,当相加的两数之和S>9时,力口6

校正;当SW9时,且无进位时,结果正确,不需校正。

18

4.2定点数的乘法运算及实现

原码乘法及实现

补码乘法及实现

阵列乘法器

一、原码乘法及实现

♦:♦由于计算机的软硬件在逻辑上具有一定的等价性,因

此实现乘除法运算,可以有三种方式:

♦I.用软件实现。

■硬件上:设计简单,没有乘法器和除法器。

■指令系统:没有乘除指令,但有加/减法和移位指

■实现:乘除运算通过编制一段子程序来实现

■算法:程序中运用串行乘除运算算法,循环累加、

右移指令一乘法,循环减、左移指令一除法。

■运算速度:较慢。

■适用场合:单片机。

20

一、原码乘法及实现

on.用硬件乘法器和除法器实现。

■硬件上:设置有并行加法器、移位器和若干循环、

计数控制逻辑电路搭成的串行乘除法器。

■指令系统:具有乘除法指令。

■实现:乘除运算通过微程序一级(硬件+微程序)

来实现。

■算法:在微程序中依据串行乘除运算算法,循环累

力口、右移指令一乘法,循环减、左移指令一除法。

■运算速度:有所提高,但硬件设计也相对复杂。

■适用场合:低性能CPU。

21

一、原码乘法及实现

❖III.用高速的阵列乘法器和阵列除法器来实现。

■硬件上:设置有专用的、并行运算的阵列乘法器和

阵列除法器。

■指令系统:具有乘除法指令。

■实现:完全通过硬件来实现。

■算法:并行乘/除法。

■运算速度:很快,但硬件设计相当复杂。

■适用场合:高性能CPU。

22

原码乘法及实现

*1、手工乘法算法

■手工计算1011X1101,步骤:1011

■手工算法:对应每1位乘数求得1项位

积,并将位积逐位左移,然后将所有X1101

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

■乘法的机器算法:从乘数的最低位开

始,每次根据乘数位得到其位积,乘0000

数位为0,位积为0,乘数位为1,则

位积为被乘数;用原部分积右移1位1011

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

分积为0。1011

10001111

23

QY二、原码乘法算法

♦:*2、原码一位乘法算法:

假设[X]原=XsX1X2.......Xn,[Y]原二YsY1

Y2……Yn,P=X-Y,Ps是积的符号:

■符号位单独处理ps=Xs㊉Ys

・绝对值进行数值运算|P|二|X|*|Y|

♦:♦例如:X=+1011,Y=-1101,用原码一位乘法计算

P=X'YO

QY举例

部分积乘数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—、原码乘法及实现

3、原码乘法的硬件实现

000001101

27

gY第一次求部分积加运算:+凶000001101

010111101

28

000001101

01011E1101

001011110

29

000001101

010111101

001011110

001011110

30

01011

01011

01011

01011

符号位异或

01011结果为:1,1000111

开始

原码一位乘法流程

结束

36

补码乘法及实现

1、补码乘法算法

(1)补码一位乘法——校正法

假设[X]补=Xo.X1,

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

则有:

[X・Y]补二[知补・(0.Y1……YQ+Y°・[—X]补

37

补码乘法及实现

证明如下:

■当被乘数X的符号任意,Y为正数时:

根据补码定义有:

[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

补码乘法及实现

■当被乘数X的符号任意,Y为负数时:

[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<二、补码乘法及实现

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

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

部分积乘数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

例:设X=—0.1101,Y二一0.1011,即:凶补二11.0011,[Y]补=11.0101,求[X*Y]补

部分积乘数说明

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

计算结果:[X*Y]补=0.10001111

补码乘法及实现

♦(2)补码一位乘法----Booth算法

做出如下推导:

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

其中,将乘数Y的补码在最末位添加一位附加位丫.

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

42

Booth算法的运算规则

假设[Y]补=Y0,Y1……Yn

①被乘数X和乘数Y均以补码的形式参加乘法运算,运算

的结果是积的补码。

②部分积和被乘数X采用双符号位,乘数丫采用单符号位。

③初始部分积为0;运算前,在乘数丫的补码末位后添加

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

④根据YnYn+1的值,按照表4.3进行累加右移操作,右移

时遵循补码的移位规则。

⑤累加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

部分积乘数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

二、补码乘法及实现

2、补码乘法的硬件实现

46

阵列乘法器

孝原理类似于二进制手工算法

■位积的每一位XiYj都可以用一个与门实现,而每

位的相加均可以使用一个全加器来实现。

XXXX

1234

XYYYY

1234_______

XYXYXYXY

14243444

XYXYXYXY

13233343

XYXYXYXY

12223242

+XYXYXYXY

11213141

PPPPPPPP

12345678

47

绝对值阵列乘法器

48

补码阵列乘法器

补码求绝对值电路

先通过一个补码求绝对值的逻辑电路变为绝对值后,

送入绝对值阵列乘法器,运算得到积的绝对值,然后

再通过一个绝对值求补码的逻辑电路,根据积的符号

求出积的补码形式。

49

补码阵列乘法器

50

4.3定点数除法运算及实现

原码除法及实现

补码除法及实现

阵列除法器

QH—、原码除法及实现

1、原码除法算法

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

■改进手工算法即可适合机器运算:0.1101]0,10110

■计算机通过做减法测试来实现1101

判断:结果大于等于表明够

0,10010

减,曲1;结果小于0,表明不

够减,商0。1101

■计算机将余数左移一位,再直10100

接与不右移的除数相减。1101

X=+0.1011,Y=-0.11010111

X+Y

52

一、原码除法及实现

♦(2)原码恢复余数算法

假设[X]原=Xs.X1X2.......Xn,[丫]原二丫$.丫1

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

X小丫的余数,Rs是余数的符号

■原码除法运算的规则是:

•1.Qs-Xs©Ys,Rs-Xs,|Q|-

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

•2.余数和被除数、除数均采用双符号位;初

始余数为|X|。

53

一、原码除法及实现

■原码除法运算的规则是:

•3.每次用余数减去|Y|(通过加上[-|丫|]补来

实现),若结果的符号位为0,则够减,上商

1,余数左移一位;若结果的符号位为1,则

不够减,上商0,先加|丫卜1灰复余数,然后余

数左移一位。

•4.循环操作步骤3,共做n+1次,最后一次不

左移,但若最后一次上商0,则必须+|丫卜诙复

余数;若为定点小数除法,余数则为最后计

算得到的余数右移n位的值。

54

被除数/余数商Q操作说明

±1

00.10110000

+11.0011+[-IY|]补

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

Y=-0.1101+00.1101+1Y|恢复余数

用原码恢复余数算法计算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|恢复余数

00.1010

01.010001100-4爻

+11.0011+[―IY门补

01101

00.0111R4>0,上商1

一、原码除法及实现

♦:♦(3)原码不恢复余数算法

-又称为加减交替法:当某一次求得的差值(余

数%)为负时,不是恢复它,而是继续求下一位

商,但用加上除数(+|丫|)的办法来取代

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

■其原理证明如下:

•在恢复余数除法中,若第iT次求商的余数

为RT,下一次求商的余数为用,贝八

R=2R.一|Y|

•如巢R/0,商的第i位上1,并执行操作:

余数左移一位,再减|丫|,得以+1,贝%

Ri+1=2R-|Y|

56

一、原码除法及实现

■如果RRO,商的第i位上0,并执行操作:恢

复余数(+1丫|),将余数左移一位,再减|丫|,

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

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

■加减交替法的规则如下:

・余数为正时,商上1,求下一位商的办法,是

余数左移一位,再减去除数;

•当余数为负时,商上0,求下一位商的办法,

是余数左移一位,再加上除数。

•若最后一次上商为0,而又需得到正确余数,

则在这最后一次仍需恢复余数。

57

被除数/余数商Q操作说明

00.10110000

例如:X=+0.1011,

Y=-0.1101,用原码不+11.0011+[-1Y]]补

恢复余数算法计算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—、原码除法及实现

*2、原码除法的硬件实现

A<|X|/余数)Q(商IQI)Qn

7\

左移一位

缓冲骷

z\

QQ

Bi

计数器<斜>

并行加法器(n+2位)

=0

控制电路逻辑

7\7\n_n_n_

控制逻相:<>DIV

t

B(除数|Y|)

QY—、原码除法及实现

原码不恢复余数除法流程

计数器减1

补码除法及实现

1、补码除法算法

补码不恢复余数除法的规则。假设[X]补=XS.X1

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

商,R是余数,则补码除法运算的规则是:

①X和Y以补码形式参加除法运算,商也以补码的形

式产生。余数和被除数、除数均采用双符号位。

②当[X]补与[Y]补同号时,第一次做凶补+[-丫]补操作,

当异号时,第一次做[X]补+[Y]补操作,得到第一

次的部分余数[R0]补。

61

补码除法及实现

补码除法运算的规则是:

③当[Ri]补与[丫]补同号时,上商1,然后余数先左移

一位,珈[-丫];、得到新余数[Ri+口补;当[Ri]补与

[Y]补异号时,上商0,余数左移T立,力口[丫"卜得

到新余数[Ri+1]补。

④循环操作步骤③,共做n次,得到1位商符和(n-

1)位商的补码数值位,最末位桌用恒置“1”法。

表4.4补码除法的运算操作表

上商

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

真值补码

减法同号(够减)11余数左移一位,+[-Y]

同号0

[X]+[-¥]异号(不够减)00余数左移一位,+[Y]

加法同号(不够减)01余数左移一位,+[-Y]

异号1

[X]+[¥]异号(够减)10余数左移一位,+[Y]

62

补码除法及实现

第二种方法的运算规则为:

①X和Y以补码形式参加除法运算,商也以补码的形

式产生。余数和被除数、除数均采用双符号位。

部分余数初始为[X]补,即[R。]补=[X]补。

②当[Ri]补与[丫]补同号时,上商1,然后余数先左移

一位,加[-丫]补得到新余数[Ri+口补;当[Ri]补与

[Y]补异号时,上商0,余数左移一位,加[-丫]补得

到新余数[Ri+1]补。

③循环操作步骤②,共做n次,得到1位商符和(n-1

位商的补码数值位,最末位采用恒置“1”法。

63

补码除法及实现

X=+0.1011,Y=-0.1101,用补码不恢复余数算法计算

X4-Yo

凶补二00.1011[丫]补二.0011[-Y],,=00.1101

第一种方法

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论