计算机组成原理(三)_第1页
计算机组成原理(三)_第2页
计算机组成原理(三)_第3页
计算机组成原理(三)_第4页
计算机组成原理(三)_第5页
已阅读5页,还剩107页未读 继续免费阅读

下载本文档

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

文档简介

第四章数据的机器运算

!计算机的主要功能是对数据进行各种加工和处理,包括

力口、减、乘、除这些基本的算术运算,与、或、非这些

基本的逻辑运算,以及由此构成的其它复杂的运算。运

算器则是实现这些运算的主要部件。

-无论多么复杂的运算,最终都要分解为加法运算来实现。

其中,减法运算通过补码转化为加法来实现;乘、除运

算可以转换为加减运算、移位操作来实现。加法和移位

是计算机中最基本的两种运算操作。

-可见,加法器又是运算器的核心部件。在加法器的基础

上增加移位功能,并通过选择输入控制条件,就可以实

现所有的运算。

1

本章主要内容

主要内容

■算术、逻辑运算的实现

■定点加、减运算

■数的移位和舍入操作

■定点乘、除运算

-规格化浮点运算

2

■、算术逻辑运算的实现

计算机中最基本的算术运算是加法运算,不论加、

减、乘、除运算最终都可以归结为加法运算。所以

首先讨论最基本、最核心的运算部件——加法器,

以及并行加法器的进位问题。

加法器是由全加器和其它必要的逻辑电路组成的,

所以我们从全加器开始讨论。

3

1、全加器(FA)

全加器真值表

■全加器(FA)是最基本

ABjCklSiq

的运算单元,由它构成00000

加法器。

00110

■全加器有三个输入量:01010

操作数A、Bi、以及低01101

位传来的进位信号G」。10010

■全加器有两个输出量:10101

本位和s「以及向高位11001

的进位信号G。11111

4

r全加器的逻辑方程和电路

根据真值表得:

SpA.©B.©G“

G=ABi+(A㊉Bj)G“

Sj:本位和

q:向高位的进位

一个全加器只完成一位加法实现电路逻辑框图

5

全加器构成加法器

■全加器并不存储信息,可用门电路来实现。用全加

器能够方便地构成加法器。加法器分为串行加法器

和并行加法器。

■串行加法器只有一个全加器,数据逐位串行送入加

法器进行计算。由于运算速度慢,一般不用。

-并行加法器则由若干个这样的全加器构成,各位数

据同时运算。并行加法器的位数与操作数的位数相

等。并行加法器的最长运算时间主要取决于进位信

号的传递时间。例如:11…11和00…01相加,最低

位产生的进位将逐位影响到最高位.

-由此可见,提高并行加法器速度的关键是尽量加快

进位产生和传递的速度。

6

2、进位产生与传递

-进位链的概念:

并行加法器中的每一个全加器都有一个从低位送来

的进位输入和一个传送给高位的进位输出。我们把

构成进位信号产生和传递的逻辑网络称为进位链。

-进位链上每一位的进位表达式为:

Cj=AjBj+(Aj®

设G产入8r称为进位产生函数

©Bj,称为进位传递函数

・・・进位表达式Ci=Gi+PiG」

串行进位

-把n个全加器串联起来,就可以实现两个n位数的相加。这种加法器

称为串行进位的并行加法器,串行进位又叫行波进位。

Co

AnBnA?B2AiB1

其中:C1=G1+P1G)串行进位的并行加法器,总的延迟时间正比于字

长,字长越长,总延迟时间也越长。

C2=G2+P2C1

I

I若一位进位需2ty时间,完成n位进位就需要2nty.

CnZ+P11cli/要提高加法运算速度,必须改进进位方式。

8

3、并行加法器的快速进位

改进串行进位方式的基本思路是让各进位同时形成,避免各进位之

间的依赖关系。现在来分析一下进位关系。

展开Ci=Gi+PQo;C2=G2+P2C1;...,Cn=Gn+PnCn.i得关系式:

G=G]+PiCo

C2=G2+P2C1=G2+P2G1+P2P1C0

C3=G3+P3c2=G3+P3G2+P3P2G1+P3P2P1。

C4=G4+P4c3=G,+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0

I

I

I

以上进位输出只与H以及最低进位Co有关,而且不依赖于其低

位进位Cj“的输入,因此各级进位可以同时产生,形成并行进位。

9

并行进位的特点

-并行进位的特点是各级进位信号同时形成,与字长无

关,提高了整体运算速度。并行进位又叫先行进位。

■最长延迟时间仅为2ty。

■随着加法器位数的增加,G的逻辑表达式会变得越来

越长,输入变量会越来越多,电路结构也会变得越来

越复杂,导致电路实现也越来越困难。

-并行进位方式需继续改进,才能有实用价值。这就是

下面要介绍的分组进位方式。

10

单级先行进位

-以16位加法器为例,将其分为4组,每组4位。

丁丫\■在组内,按照并行进位函数直接产生Cj〜C,,这

构成16些进位可同时得到。实现这种进位逻辑的电路称

加%为4位先行进位电路(CLA),如74181ALU。

实1.利用这种4位一组的CLA电路和4位全加器可以构

成4位CLA加法器。注意,4位CLA加法器包含了

两部分逻辑:4位全加器和4位一组的先行进位链,

O这个组内的进位为一级进位。

o

X-在组间,每个组的进位输入是前一个组的进位输

n出,而每个组的进位输出是下一个组的进位输入.

U

单级先行进位(续一)

■上述组内并行、组间串行的进位方式也称为单级先

行进位方式,原理如下图所示。

Sl6~Sl3Sl6~Sl3S8~S5S4~Si

令介令令

Bl6~Bl3Bl2~B9B8~B5B4~Bl

12

单级先行进位(续二)

■组内并行、组间串行进位的时间图(16位)如下:

-完成进位时间8ty.

-进位时间与组数成正比,组数越多,进位时间越长。

13

&多级先行进位

为说明问题,我们不妨仍以16位加法器为例,仍然4

位一组,分成4个小组,先就第一小组的进位输出函

数做一下分析:

c4=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0

GJPJ

=GJ+PJCO

■G;称为组进位产生函数,P;称为组进位传递函数;

这两个函数类似于进位产生函数G和进位传递函数P.

14

多级先行进位(续一)

-四个组内的最高进位CX6、C工2、C8>C4可以分别表示为:

C4=G1*+PJCo

C8=G2*+P2*C4

C12=G3*+P3*C8

C16=G4*+P4*C12

现在逐项代入、并展开得关系式:

C4=G1*+PJCo

c8=G2*+P2*C4=G2*+P2*G1*+P2*P1*C0

C12=G3*+P3*G2*+P3*P2*GJ+p3*p2*p1*c0

C16=G4*+P4*G3*+P4*P3*G2*+P4*P3*P2*G1*+P4*P3*P2*P1*CO

可以看出,这4组进位结构与前述4位先行进位逻辑完全相同,

组间进位信号只与最低进位Co有关,所以能同时产生。

15

多级先行进位(续二)

-组内进位信号能同时产生、组间进位信号也能同时产

生,由此可以构成多级并行进位逻辑。16位2级先行

进位加法器如下图所示。

16

多级先行进位(续三)

■问题是这4个组间进位信号如何用硬件来产生呢?

对于多级先行进位的实现可以按如下思路来理解:

■先把单级先行进位加法器的串行进位链断开;

■增加一级先行进位链,这个新增加的先行进位链的

进位称为二级进位;

■组间进位信号C4、C8>C12>C[6由二级进位链来产

生,其逻辑关系式已经得到;

■让一级进位链多产生两个辅助函数Gi*和巴*,并且

作为二级进位链的输入。

17

[多级先行进位(续四)

16位2级先行进位时间图进位产生次序如下:

■产生第一小组的Ci〜C3、所有

组进位产生函数GJ和组进位传

递函数PJ,时间为2ty.

■由CLA电路产生第二、三、四

小组的组间进位信号C4、C8>

(:⑵C16,时间为2ty.

■产生第二、三、四小组的组内

进位信号C5、Cg>C7、Cg>CQ

C11、C13、C14、C15,时间为

2ty.

18

4、多功能算术逻辑部件ALU

■前面介绍了运算器的算术运算功能,为了完成多种算

术逻辑运算,需要将加法器的功能进行扩展,扩展的

基本思想如下:

参加运算的两个数Bj和低位进位

Fi0

先不进行全加,先把两个输入

Bj和四个控制参数S。、S2.S3进

行组合,形成函数Xj和Y〃然后再将X。

Y和低位进位CM通过全加器进行全加。

这样一来,控制参数不同,得到的组S2

合函数也不同,从而实现多种算术和

逻辑运算。AiB.

19

算术逻辑部件ALU

-算术逻辑部件ALU大体上有三部分组成:

-全加器

-进位链

■输入选择器

■下面以ALU的一位逻辑为例,原理性地说明

算术、逻辑功能是如何实现的。

20

算术逻辑部件ALU(续一)

21

算术逻辑部件ALU(续二)

CiFi

控制信号与选择器输出关系表:

S3S2XjSiSoX

001一ooA

01Aj+质o1啊

10Aj+Bj10ABi\

11AJ

110

(进位传递函(延位产生函数)

S3S2BiS1SOAiMCi-1

通过不同的输入选择,实现不同的功能,这进一步说明:数据是在传

送过程实现运算、并得到处理的。多位ALU的实现思路完全一样。

22

5、运算器的组织

■运算器主要由算逻部件ALU、寄存器、多路转换

器、内部数据总线组成。

-在运算器内部,各功能模块之间的连接大都采用

总线结构,称为运算器的内部总线,ALU和各寄

存器都挂在上面。

-运算器大体上有如下三种结构:单总线结构、双

总线结构和三总线总线结构。

23

运算器的3种组织结构

操作数需要分两次送入ALU,而

且需要两个缓冲寄存器;完成一

通用

寄存器次运算需要3步。特点是控制电路

简单,而速度较慢。

总线1

•两个操作数可以同时到达ALU进行

运算,且马上可以得到运算结果,缓

输出端需要设置一个缓冲寄存器;器

完成一次运算需要2步。

总线1

通用两条总线同时供给操作数,输出与

寄存器第三条总线相连;完成一次运算需

要1步。特点是操作速度快,控制

相对复杂一些。

24

二、定点加减运算

■原码加减运算

-当原码做加减运算时,符号位不参加运算,只

在两数的绝对值之间进行。

-加法时可能要做减法(两数异号)、减法时又

可能做加法(两数异号)。

-操作结果需要根据绝对值的大小来确定运算结

果的符号。计算机中通常没有减法器,减法运

算需要转换为加法来实现。

结论:原码加减运算过程比较复杂,一般不用.

25

1、补码加减运算

补码的运算规则:

-费加运算的操作数用补码表

补码加减运算的依据如下:O

-补码的符号位与数值位同时

■和的补码等于补码的和参加运算。

■以+丫]补=凶补+[丫]补-若做加法,则两数补码直接

相加;

■相反数的补码等于补码的相反数

若做减法,用被减数与减数

■[的补=•凶补

的机器负数相加。

■差的补码等于补码的差

■运算结果为和、差的补码。

补+丫]补=凶补•补

■[X-Y]#=[X]1[Y]

注:机器负数等于补码连同

符号位按位求反,末位加1。

26

补码加减示例

例2、A=0.1011,

例1、A=0.1011,

B=-0.0010,求A・B.

B=-0.1110,求A+B.

解:[A]补=0.1011,

解:[A]=0.1011,

#[B]=1.1110,

[B]=1.0010#

#[■B]补=0.0010

0.10110.1011

+1,0010+0.0010

1.11010.1101

・•・[A+B]补=1.1101

・・・[A-B]#=0.1101

A+B=-0.0011A-B=0.1101

27

2、补码加减溢出的判别

例3、X=1011,Y=lll求X+丫。例4、X=-10U,Y=-lll求X+Y。

解:[X]补=0,1011,[Y]补=0,0111解:[X]补=1,0101,[Y]补=1,1001

0,1011(+11)1,0101(-11)

+0,0111(+7)+1,1001(-7)

1,00100,1110

[X+Y]#=1,0010[X+丫]补=0,1110

X+Y=-111O(-14)X+Y=+111O(+14)

出错原因在于用了4个二进制位来表示绝对值为18的和数。

28

补码加减运算溢出

■当运算结果超出了机器所能表示的范围时,

数值位侵占了符号位,这种现象称为溢出。

两个同符号的数相加会产生溢出。

-两个正数相加,结果大于机器所能表示的

最大正数,称为上溢(正溢)。

■两个负数相加,结果小于机器所能表示的

最小负数,称为下溢(负溢)。

29

补码加减溢出的判别方法

判断溢出的三种基本方法:

①采用一个符号位判别

.当参加运算的两个数的符号为0、而和的符号

位为工时上溢;

.当参加运算的两个数的符号为工、而和的符号

位为0时下溢。

・•・判别条件为:溢出=XSSs+XsYs$.

其中,Xs、Ys为参加运算两数的符号,!

Ss为结果符号位。t

30

补码加减溢出的判别方法(续)

②采用进位位判别

•两个正数相加,当最高有效位产生进位(C1二1)而

符号位不产生进位(Cs=O)时,发生上溢;

•两个负数相加,当最高有效位不产生进位(Ci=O)

而符号位产生进位,医生下溢;

・•・判别条件为:溢出=&Ci+C©=Cs㊉Ci

③采用变形补码(双符号位补码)

•采用变形补码检测,当运算结果的两符号位不一致

时表示溢出。若符号位用Ss〔Ss2表示,WJSs1Ss2=01

=

结果上溢,Ss<|SS210结果下溢.

・•・判别溢出的条件为:溢出=Ssi㊉Ss2名工始终正跃

31

3、补码定点加减运算器的基本组成

•补码加法:在X—F、

Y—F、F—X三个控制

信号的控制下,打开门

A、门B和门C,把寄

存器X和寄存器Y的内

容送入加法器的两个输

入端进行加法运算,把

结果送回寄存器X中.

•补码减法:与补码加法

不同之处在于要用

V-F来代替Y—F、并

在1一F控制信号作用

下使结果加1,即可完

成补码减法运算。

32

三、带符号数的移位与舍入

-移位是算术、逻辑运算的又一基本操作,而且几乎

所有机器的指令系统都设有移位指令。比如,乘法

运算大多数是通过“累加一移位”来实现的。

-算术移位操作时,符号位不变,数值大小则会发生

变化。左移一位相当于乘以2,右移一位相当于除

以2,因为移位使位权发生了变化。

-在移位过程中,有效数位会被移出数据字而丢失。

因此,还需要考虑数据的舍入问题,以尽可能提高

数据的表示精度。

33

1、移位规则

算术左移在不产生溢出时,

-原码移位规则符号位保持不变。

■符号位不变

-空出位补0

补码移位规则

■符号位不变

例如:IXJ2X3…Xn

-左移时,空出位补0

左移后为:IX2X3…Xn。

-右移时,符号位补充空出位

右移后为:10%乂2…Xn-i

例如:IX1X2X3…Xn

我们用的微机使用补码左移后为:IX2X3…X*

来表示数据.....

右移后为:11XJ2…Xn」

34

2、移位器逻辑电路

■移位器是由与门和或门组成的逻辑电路(实际是一个

多路选择器),可以实现直传(不移位)、左斜一位

送(左移一位)和右斜一位送(右移一位)的功能。

移位器逻辑电路如图所示。

左移由2F-L控制,Fg-Lj

直传由F-L来控制,Fi-Lj

右移由F/2-L来控制,Fi+1->Lj

F/2-L2F-*L

移位器无数据寄存能力。F—L

Fi+lFi-i

35

3、舍入操作

-舍入操作有以下几种:

-截断法:无条件地舍去多余的位。

■恒置工法:舍去多余位,保留部分最低位置工。

-0舍工入法:舍去部分的最高位为工时,则保留部

分末位加工,与四舍五入法类似。

■截断法和恒置工法误差比较大;0舍1入法比较合理,

但当保留部分为0」工…工时,会导致再次溢出。末

位恒置工,在除法中非常有用。

36

定点乘法运算

乘法运算要比加法运算复杂。先举一个大家熟悉的手工定点乘法

的例子;之后我们来看,如果将手工运算改为机器运算,会出现

什么问题?该如何解决?

•例:0.1101X0.1011=?.手工计算的二进制乘法规则:

数值位:①0X0=0

0.1101

②1X0=0

X0.1011

1101③1X]=1,逻辑与。

1101符号位:①同号相乘为正

0000②异号相乘为负,逻辑异或

+1101

0.10001111其结果:乘积=符号位〃数值位。

37

乘法:由手工计算到机器运算

-由手工计算到机器运算,需要解决3个问题:

-符号如何处理?

-多个部分积如何相加?

■为保持两次部分积之间的位权对应关系,会导致加法器位数的增

力口,能否在不增加位数的情况下保持位权对应?

-由于解决方式的不同,形成了两种主要的乘法器结构

-采用常规的加法器来实现

■将n位乘法转换为n次累加和移位,每次处理1位。

-为避免加法器位数的扩充,可以把手工计算时的新部分积

“左移——累加”改为机器运算的原部分积“累加——右

移”。

-采用阵列乘法器实现

-利用中大规模集成电路把多项部分积同时相加,这种结构的

乘法器称为阵列乘法器。

38

1、原码一位乘法

■原码一位乘法是从手算演变而来的,即用两个操作数的绝对值相

乘,乘积的符号为两操作数符号的异或值(同号为正,异号为负).

乘积P=|X|X|Y|

符号PS=XS©YS

■原码一位乘法的规则

①被乘数和乘数取绝对值。

②乘数的最低位为1时,部分积加被乘数,否则加0。

③部分积和乘数右移一位。

④重复②③,直到乘数全部移出。

⑤积的符号由两乘数符号的异或得到。

⑥积的符号与积的数值拼接得到积的原码。

39

原码一位乘示例

实际运算的准备工作:

■|被乘数I^B寄存器

■|乘数|^C寄存器(将要存放部分积的低位)

-0->A寄存器(将要存放部分积的高位)

例4:已知:X=0.1101,Y=-0.1011,求:XxYo

解:|X|=004101一B(被乘数采用双符号位)

|Y|=1011^0(乘数取数值)

。一A

40

C原码一位乘A说明

j-……一C

00.00001011

+凶00・1101c4=l,+|X|

00.1101

一00.01101101部分积右移一位

+|X|00.1101c4=l,+|X|

01.0011

700.10011110部分积右移一位

+000.0000c4=o,+0

00.1001

一00.01001111部分积右移一位

+|X|00.1101c4=l,+|X|

01.0001

―00.10001111部分积右移一位

•・•Pq=X,㊉=0㊉1=1・•・XxY=-0.10001111

Sm3

41

原码一位乘法的硬件实现

A、B为n+2位,C为n位,加法器

为n+2位,异或门。

A、C寄存器级连在一起,具有右

移功能。每次移位时,A的最低位

进入C的最高位,而C的最低位被

丢掉。最后,A的内容为乘积的高

位部分,C的内容为乘积的低位部

分。

C的最低位作为控制信号,控制运

算器加被乘数还是加零。

42

2、补码一位乘法

■原码乘法虽然容易实现,但一般计算机中数据多以补码

表示。若仍用原码做乘法,需要进行码制转换,反倒不

方便而且又影响速度。

■因为补码符号位直接参加运算,所以补码乘法不能简单

地套用原码乘法的算法。实现补码乘法有2种方法。

■一种方法为校正法,使用较少,只给出算式:

补=补

[XXY][X]X(O.X1X2...Xn)-[X]#XY0

-另一种更好的方法为比较法,该算法是英国人Booth夫

妇提出,所以也称为Booth法。该算法无需校正,控制

较为简单。以下主要讨论比较法。

43

Booth的推导

设:被乘数[X]补=Xo.X[X2…Xn,乘数[丫]补=丫0.丫1丫2―丫口贝I」:

[XXY4=[X]#X[0.Y1Y2...Yn]・[X]补XY°

=[X]补*[2」丫产2-2丫2+…+2-nYnk[X]补XYo

12n

=[X]^hX[-Yo+2-Y1+2-Y2+...+2Yn]

1・)

=[X]#X[-Y0+(Yr2-Y1)+(2-1丫22-2丫2+…+(281%・2川丫》

=凶补X[(YrY。)+(Y2-Y1)2U...+(0-Yn)2-n]

=凶补X[(YrY。)+(Y2-Y1)2U...+(Yn+1-Yn)2-n];Yn+1=0

上式表明:[XXY]补可以根据乘数相邻两项的比较结果,

即用“低位•高位”的值来确定每步的运算操作。

44

Booth法的递推公式

3丫]补=凶补义[(y1-y0)+(y2-y1)2"……+(yn+1-yn)2叫

/"-、、/八、C

从前面的推导中得出递推公式:

⑷补=0

[Z1]#=2-i{[Z0]#+(yn+ryn)[X]#}

%]补=2汽[乙]补+仇$.1)凶补}

I

I

4]补=2-1{乙川补+仇玉)凶补}

・・・[XXYh『[Zn]补+(y「yj凶补

式中,[Zo]补为初始部分积,

[乙]补〜[ZJ补为每次累加并右移之后的部分积。

45

Booth乘法运算规律与规则

■判断位YnY/1操作

00原部分积右移一位

01原部分积加[X]补后右移一位

10原部分积加卜X]补后右移一位

11原部分积右移一位

-参加运算的数用补码表示,结果也是补码;符号位直接参加运算。

■乘数最低位后面增加一位附加位Yn+工,初值为0。

逾而>乘数的最低两位丫一陋工的值决定每次执行的操作。

■部分积和乘数一起右移一位。

■共做n+1次累加、n次移位,最后累加不移位。

由于符号位参加运算,部分积累加时最高有效位的进位可能侵占符

号位,所以被乘数和部分积应取双符号位,乘数只需取一个符号位

46

补码一位乘示例

例5:已知:X=-0.1101,Y=0.1011;

求:XXYo

解:[X]补=11.0011一B,

[Y]补=0.1011一C,

[以]补=00.1101

。一A

运算过程见下页:

47

(补码一位乘)AC附加位说明

00.00000.10110

+[-X]补00.1X01-C4c5=10,+[-X]补

00.1101J

一00.0110101011部分积右移一位

+00。.0000―C4c5=11,+0

00.0110I

700.0011010101部分积右移一位

-

+凶补11.0011C4c5=01,+[X]补

11.011oh

711.1011001010部分积右移一位

+卜补补

X]00.1101C4C5=10,+[・X]

00.1000n

―00.0100000101部分积右移一位

+凶补11.0011-C4c5=01,+[X]补

11.0111

V[XxY]^=1.01110001:.XxY=-0.10001111

补码一位乘法的硬件实现

■A、B、C为n+2位,

加法器为n+2位。A寄存器♦C寄存器ynY向

1----------T1—右移

与或门有n+2个。加法器J'

L-3TJUL

10译

■各器件的作用与原码控制门:oi码

一位乘法相同。控制器

方式上有所不同,即B寄存器

由C寄存器的最低两

位来控制加、减被乘CR计数器

数或加0操作。Booth法一位补码乘法器框图

49

3、阵列乘法器

为了提高乘法运算速度,还可以采用高速阵列乘法器

执行乘法运算。设有两个不带符号的二进制整数:

772-172—1

Z7

力=WXX2B=£bjX2

i=07=0

A、B两数的乘积P为:

772—171—1777+77—1

P=AxB=ZZa/jx2"」=>p卜x2,

z=0j=0k=0

假设,当m=n=4时,来考虑乘法的情况:

50

y阵列乘法器原理

33^2a°

Xb3b2b1b0

a3bl

a3b2a2b2

+a3b3a2b3

P7P6P5P4P3P2PiPo

51

阵列乘法器原理(续一)

■一个基本乘法单元由两部分组成:

-.与是逻辑与运算,可用与门实现

-错位相加可用全加器完成

部分积Xi

XiISi基本乘法单元原理图

52

阵列乘法器原理(续二)

由乘法单元构成的乘法器如图所示,每个方框代表一个基本乘法单元.

初始部分积-------f0000

53

阵列乘法器原理(三)

-构成nXn整数阵列乘法器,共需要nXn

个乘法单元。

■若采用补码相乘时,可在上述乘法阵列

外增加三个求补器,两个为算前求补器,

将两个操作数先变成正整数,一个为算

后求补器,在相乘两数符号不一致时,

把运算结果变成补码。

54

五、定点除法运算

■大家很熟悉除法运算。手工计算除法的关键是比较余

数与除数的大小,根据比较结果决定商值。

-问题是,当将手工计算转换为机器运算时,如何判断

够减?如何处理符号位?如何提高运算速度?

■除法运算是乘法运算的逆运算。乘法通过加-右移实

现,不难想到机器除法运算是通过减■左移实现的。

-机器实现除法运算有两个先决条件(纯小数):

-除数不等于0,否则商为无穷大。

-被除数要小于除数,否则商会溢出。

55

1、原码恢复余数法

■所谓恢复余数法,不管被除数(或部分余数)是否

够减除数,都一律先做减法。若部分余数为正,表

示够减,该位商上“产;若部分余数为负,表示不

够减,该位商上“0”,并要恢复余数(加除数)。

■恢复余数法固有的缺点:

-由于部分余数的正、负是随机出现的,使得除法

运算的实际操作次数不固定,控制电路较复杂。

-在恢复余数时,要多作一次加法,降低了除法的

执行的速度。

56

2、原码不恢复余数法

■分析恢复余数法发现,当减除数操作使得余数为负数时,

商为“0”,并恢复余数,然后左移,再减除数。

若用R表示余数,用B表示除数,上述操作过程可表示为:

(R+B)X2-B=2R+B

结论:当余数为负时,商上“0”,余数左移一次后加除数,

结果不变。这就是不恢复余数法的实现思想。

■不恢复余数法(加减交替法)的运算规则为:

-若余数沙,上商“1”,余数左移一位,减除数。

-若余数<0,上商“0”,余数左移一位,加除数。

■由于加减运算交替地进行,所以又称为原码加减交替法。

57

原码不恢复余数法示例

除法运算需要3个寄存器:

■A寄存器存放被除数:被除数A

-B寄存器存放除数:除数

-C寄存器存放商:商=>C

例6:已知:X=-0.10101,Y=0.11110,求:X4-Yo

解:凶=00,10101一A,。一C

|Y|=00.11110->B,-|Y|=11.00010

58

r慌码不核\

'、、、卷余数注//C说明

00.101010.00000

-|Y|11.00010,|Y|

,数为负,商0

1.101110.00000

<—.01110东移一位

_____((.11110+|Y|

00.011000.00001余数为正,商1

―00.11000左移一位

-|Y|11.00010,|Y|

11.110100.00010余数为负,商0

―11.10100方移一位

+IYI00.11110+|Y|

00.100100.00101余数为正,商1

―01.00100左移一位

-|Y|1L00010-|Y|

00.0110.01011余数为止,商1

<—(10.110左移一位

・|Y|1L1.001.|Y|

喝招11.011100.10110余数为负,商0

需要Arddffl_____00J1110恢复余数,+|Y|

00.01100

原码不恢复余数法示例(续)

Qs二Xs㊉Ys=1㊉0=1

商=0.10110

余数=0.01100x2-5

0,01100x2-5

・•・X-Y="(0.10110+

0.11110

需要注意几点:

1、不恢复余数法,被除数、除数需要取双符号位。

2、如果最终余数为负,必须恢复一次余数且不需左移。

3、符号位不参加原码运算,应单独处理。

60

原码不恢复余数法的硬件实现

■A、B寄存器,n+2位

C寄存器,n+1位

加法器,n+2位

寄存器

XsA寄存器CQn与或门,n+2个

T左移s

A、C寄存器级连在一起,具

1-E

加法器有左移一位功能。每次移位时,

C的最高位进入A的最低位,

控制门

而C的最低位用来保存每次运

计算得到的商。A的初值为被除

B寄存器器

由■tH数,最后变为余数,C的内容

XsYsBi:QQ为除法得到的商。

原码加减交替法除法运算器框图在运算过程中,由余数的符号

决定商值和下一步操作,即控

制运算器加除数还是减除数。

61

3、补码不恢复余数除法

■牢记补码的定义。如果被除数和除数异号且够减,则

商为o,因为商将是负数的补码;原码正好相反。

■除法的实质是“减法”,当用补码表示的两个数执行

除法运算时,同号时应该做减法,异号时应该做加法。

■当相除两数同号时,余数和除数也同号则够减,商为

1,因为商是正数,补码=原码;当相除两数异号时,

余数和除数同号则不够减,商也为工,因为商为负数,

补码=反码+2,11(或+工)o

62

关于除法的够除和不够除

同号相除:①7+4同号相除:②4-5-7

1余数与除数71%

余数与除数4亍

同号贝IJ够-4异号则不够—7

减,商为13减,商为0-3

异号相除:①・7・4异号相除:21-4-5-7

余数与除数4月余数与除数今

异号则够+4同号则不够+1

减,商为1-3减,商为0-3

1一~►补码为0—补码为1

63

补码不恢复余数除法的上商和商符

1、只能通过余数和除数作比较,判断是否够减。

■被除数、除数同号,:宗及丁藤薮商吾加能瀛-工商I

■被除数、除数异号,1余数、除数同号不够减,上商u

所以,补码除法的上南珈面■币巨富%;

余数、除数同号,上商1;

举例说明

余数、除数异号,上商0。

2、商的符号在求商的过程中自动形成:

在除法的先决条件下(|X|<|Y|和丫,0)

■当被除数与除数同号时,第一次除法肯定不够减,

商为0,恰好表示正号;

■当被除数与除数异号时,部分余数一定跟除数同号,

商为1,也恰好表示负号。

64

补码不恢复余数除法的操作

■结果修正:

■得到正商,不需要修正。

■得到负商,实质上是商的反码,低位+1才能成为补码。

-一般的处理方法为:无论正商还是负商,末位恒置为1。

-补码加减交替法操作规则:

-部分余数和除数同号,上商1,下一步左移一位、减除数;

-部分余数和除数异号,上商0,下一步左移一位、加除数。

65

补码不恢复余数除法示例

例7:已知X=0」000,Y=-0.1010;

求Y。

解:[X]补=00.1000一A,

[Y]补=11.0110一B,。一C

[-Y]#=00.1010

66

补码不恢道、

''、、、、余数除法AC说明

00.10000.0000

+[Y]补11.0110[X]补、[Y]补异号,+[Y]补

11.11100.0001[Q补、[Y]补同号,商1

―11.1100左移一位

+[-Y]补00.10X0+[-Y]补

00.01100.0010[1J补、[Y]补异号,商0

―00.1100左移一位

+[Y]补11.0110+[Y]补

00.00100.0100同补、[Y]补异号,商0

―00.0100左移一彳立

+[Y]补11.0110+[Y]补

11.10100.1001[rj补、[Y]补同号,商1

―11.0100左移一位

+[-Y]补00.1010+卜丫]补

/补码不'二一一

,懑校咚/…11.11101.0011末位恒置1

67

补码不恢复余数除法示例(续)

[商]补=1.0011

[余数]补=14110x2”

1.1110x2-4

[X-Y]=1.0011+

#1.0110

・・商二00.1101

余数=・0・0010x2-4

■0.0010x2-40,0010x2-4

X-Y=-0.1101+=-0.1101+

-0.10100.1010

68

补码不恢复余数除法的硬件实现

■补码不恢复余

数除法的硬件

温馨提示

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

评论

0/150

提交评论