《计算机组织与系统结构》-第3章计算机中的数值运算与运算器_第1页
《计算机组织与系统结构》-第3章计算机中的数值运算与运算器_第2页
《计算机组织与系统结构》-第3章计算机中的数值运算与运算器_第3页
《计算机组织与系统结构》-第3章计算机中的数值运算与运算器_第4页
《计算机组织与系统结构》-第3章计算机中的数值运算与运算器_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

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

文档简介

第3章计算机中的数值运算与运算器

本章学习目标

本章将介绍数据与文字在计算机中的表示方法,详细讲解数值数据

的原码、补码和反码表示法以及它们之间的相互转换,定点表示法、

浮点表示法、定点运算法、浮点运算方法和运算器的组成。通过本章

的学习,应该重点掌握和理解以下内容:

■了解数据、文字在计算机中的表示方法

-掌握原码、补码和反码的表示方法,以及它们之间的相互转换

■掌握定点表示法和浮点表示法

-掌握定点四则运算和浮点四则运算

第三章12011-12-31

3.1数值数据的表示

3.1.1无符号数和带符号数

在计算机中,数据可分为无符号数和带符号数。所谓无符号数,是

指正整数,机器字长的全部数位均用来表示数值的大小,相当于数的绝

对值。例如有两个二进制数N1和N2。

Nl=01011表示十进制数11

N2=11011表示十进制数27

对于字长为n位的无符号数的表示范围是0〜2n-l。

一般计算机中都设有无符号数的运算和处理指令,还有一些转移指

令也是专门针对无符号数的。

然而,我们在日常生活中会大量用到带符号的数,即正数和负数,

我们用“+”、“一”号加绝对值来表示数值的大小。用这种形式表示的

数值在计算机技术中称为“真值”。

第三章22011-12-31

但是,机器是无法识别符号“+”、“一”的,由于“+”、“一”恰

好是两种截然不同的状态,如果用“0”表示“+”,用“I”表示“一”,

这样符号就被数字化了,并且规定将它放在有符号数的前面,这样就组

成了有符号数。这种在计算机中使用的、包括符号位在内都被数字化了

的数称为“机器数”或“机器码”。机器数有三种不同的表示形式:原

码、补码和反码。

对于带符号数而言,上面例子中的两个机器数Nl、N2的含义发生了

变化。

Nl=01011表示十进制数+n

N2=11011根据编码的不同分别表示不同的值,如原码时表示十进

制数一11

第三章32011-12-31

3.1.2原码表示法

原码表示法是一种最简单的机器数表示法,用最高位表示符号位,

符号位为“o”表示该数为正数,符号位为“1”表示该数为负数,数值跟

随其后,并以绝对值形式给出,这是与真值最接近的一种表示形式。

1.定点小数的原码形式

设定点小数为±0了其…Xn,它的原码形式为Xs%X2…Xn,其中Xs表

示符号位。原码的定义为:

X0<X<1

[x]原

1-X=1+IXI-1<X<0

式中:X表不真值,[X]原表示原码。

例如:X=0.0101,[X]原=X=0.0101

X=-0.0101,[X]原=1-X=1-(-0.0101)=1+0.0101=1.0101

第三章42011-12-31

2.定点整数的原码形式

设定点整数为±%X2…X。,它的原码形式为Xs,XJ2…X。,其中Xs

表示符号位。原码的定义为:

X0<X<2n

2n-X=2n+|X|-2n<X<0

式中:X表示真值,[X]原表示原码,n为整数的位数。

例如:X=0101,[X]原=X=00101

n4

x=—0101,[X]hi,=2-X=2-(-0101)=10000+0101=10101

在原码表示法中,真值0有两种不同的表示形式:

[+0]原=0,00...0

[―0]原=1,00...0

第三章52011-12-31

原码表示法的优点是简单易懂,机器数和真值之间的相互转换非常

容易,用原码实现乘、除运算的规则很简单。但它的缺点是实现加、减

运算的规则较复杂,这是因为,当两个数相加时,如果是同号则数值相

加,如果是异号,则两数相减。而在进行减法运算时,还要比较绝对值

的大小,然后用大数减小数,最后还要给结果选择恰当的符号,为了解

决这些矛盾,人们引入了补码表示法。

3.1.3补码表示法

补码表示法的设想是:使符号位参加运算,从而简化了加、减法的

运算规则;使减法运算转化为加法运算,从而简化了机器的运算器电路。

我们先以钟表对时为例说明补码的概念。假设有一只表的时间停在8点

钟,而现在的正确时间为3点整,要校准时间,可以采用两种方法:

(1)将时针顺时针方向正拨7小时:8+7=15=12+3=3(mod12)

(2)将时针逆时针方向倒拨5小时:8-5=3o

第三章62011-12-31

因为钟表的一周为12个小时,12相当于钟表的进位值,在数学中

称为“模”,记作(mod12)o上例中7和一5对钟表而言,它们的作用

相同,即加7和减5是等价的,我们称7是一5对模12的补码。可以用数学

公式表示为:-5=+7(mod12)

从这个例子可以得到一个启示,对于一个确定的模来说,某数减去

小于模的另一个数,总可以用加上模与该数的绝对值之差来代替,即负

数用补码表示,这样可以将减法运算转化为加法运算了。这样,在计算

机中实现起来就比较方便了。

例如:9-6=9+(-6)=9+(12-6)=9+6=3(mod12)

65-25=65+(-25)=65+(100-25)=65+75=40(mod100)

在定点小数机器中的数最大不超过1,也就是负的小数对“产的补

码是等价的。但实际上,负数的符号位还有一个“1”,要把它看成的数

的一部分,所以要对2求补码,即以2为模。

第三章72011-12-31

1.定点小数的补码形式

若定点小数为±0.X]X2…Xn,它的原码形式为Xs.xp(2…Xn,其中表

示符号位,则补码表示的定义为:

X0<X<1

(mod2)

2+X=2—|X|-1<X<0

式中[X]补为机器数,X为真值。

例如,X=+0.0101,则[X]补=0.0101

x=-o.0101,则[X]补=10+X=10.0000-0.0101=1.1011

一般情况下,对于正数X=+0.X]X2…Xn,则有

补=

[X]0X^2,..xn

对于负数X=—0.X/2…Xn,则有

[X]补=10.00・・・0—O.XiX2・・・Xn(mod2)

注意,0的补码表示只有一种形式,即[+0]补二[一0]补=0.0000。

第三章82011-12-31

2.定点整数的补码形式

若定点整数为±XR2…Xn,它的补码形式为Xs,乂止2…Xn,其中Xs表

示符号位,则补码表示的定义为:

X0<X<2n

(mod2/z+1)

2n+1+X=2n+1-|^|-2n<X<0

式中:X表示真值,n为整数的位数。

例如,X=+0101,则[X]补=00101

X=-0101,则[X]补=2n+1+X=25+(—0101)=25-0101=100000-

0101=1,1011

采用补码表示法进行减法运算就比原码方便多了,因为不论是正数

还是负数,机器总是做加法,减法运算可转换成加法运算。但根据补码

的定义,求负数的补码要从2减去|X|。为了用加法代替减法,结果还要

在求补码时做一次减法,这显然是不方便的。下面介绍的反码表示法可

以解决负数的求补问题。

第三章92011-12-31

3.1.4反码表示法

所谓反码,就是二进制数的各位数码由o变为1,由1变为0。也就是

说,若Xj=l,则反码七二0;若X/0,则反码Xj=l。数值上面的横线表示反

码的意思。反码表示法与补码表示法有相似之处,正数的反码就等于真

值,负数的反码是把其原码除符号位以外的各位按位取反。

在计算机中用触发器寄存数码,若触发器Q端输出表示原码,则其端

输出就是反码。由此可见,反码是容易得到的。

1.定点小数的反码形式

对定点小数,反码表示的定义为:

0<x<1

-2-n)+X-1<X<0

其中n代表数的位数。

第三章102011-12-31

下面我们来证明第二个式子。SX=-0X1X2...Xn,则有[X]反O现在

将X的绝对值|X|和[X]反相加,则得

[X]反+|X|=1.11...1=10.00...0-0.00...1=2-2-n

所以

[X]反二(2-2-n)-|x|=(2-2一n)+X

一般情况下,对于正X=+0.X/2…Xn,则有

[X]反二0印2…Xn

对于负数X=-0力也…Xn,则有

1.X1X2…Xn

对于0,有[+0]反和[—0]反之分:

[+0]反=0.00...0

[―0]反=1.11...1

第三章112011-12-31

例如,X=+0.0101,则如]反=0.0101

X=-0.0101,则[X]反=(2-2-4)+X=1.1111+(一

0.0101)=1.1111-0.0101=1.1010

我们比较反码与补码的公式

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

[X]补=2+X

可以得到

凶补=[X]反+2-n

由这个公式可知,求一个负数的补码,其方法是符号位为1,其余各位0

变1,1变0,然后在最末位(2-n)上加1。

第三章122011-12-31

2.定点整数的反码形式

对定点整数,反码表示的定义是

0<X<2n

-1)+X-2n<X<0

例如,X=+0101,则[X]反=00101

X=-0101,贝MX]反二(2n+1-l)+X=(25-1)+(-0101)

=(100000-1)-0101

=11111-0101

=11010

第三章132011-12-31

3.1.5三种码制的比较与转换

1.比较

三种码制既有共同点,又有各自不同的性质,主要区别有以下几点:

(1)对于正数,它们都等于真值本身,而对于负数各自有不同的表示。

(2)最高位都表示符号位,补码和反码的符号位可作为数值的一部分看

待,和数值位一起参加运算;但原码的符号位不允许和数值位同等看待,

必须分开处理。

(3)对于真值0,原码和反码各有两种不同的表示形式,而补码只有唯

一的一种表示形式。

(4)原码、反码表示的正、负数范围相对零来说是对称的;但补码负数

表示范围较正数表示范围大,能多表示一个绝对值最大的数,其值等于一

2-n(定点整数)或一1(定点小数)。

第三章142011-12-31

表3-1给出了以4位二进制数为例,表示三种不同码制时的十进制真值。

表3-1三种不同码制时的十进制真值

二进制数原码补码反码

0000000

0001111

0010222

0011333

0100444

0101555

0110666

0111777

1000~0-8-7

1001一]一7

1010一6^5

1011-3~4

1100-4-3

1101______-3-2

1110-6-2--1

1111-7-1-0

第三章152011-12-31

2.转换

三种不同码制以及真值之间的转换关系如图3-1所示。

从图3-1可看出,真值X与补码或反码之间的转换通常是通过原码实

现的,也可以直接完成真值与补码或反码之间的转化。

若已知机器的字长,则机器数的位数应补够相应的位数,例如机器

字长为8位则:

X=1011[X]原=00001011[X]补=00001011[X]反=00001011

X=-1011[X]B=10001011[x]补二iinoioi[X]^=11110100

X=0.1011[X].原g=0.1011000[X],k=0.1011000[X]^=0.1011000

x=-o.1011[X]原=1.10110000101000[X]反二1.0100111

第三章162011-12-31

[X]补

符号位不变

当Xs=o时数值位不变

当Xs=l日寸数值位变反+1

符号+/-变成0/1

[X]真值

数值位不变

符号位不变

当Xs=0口寸数值位不变

当Xs=l时数值位变反

[X]反

图3-1三种不同码制以及真值之间的转换关系

第三章172011-12-31

3.2数的定点表示与浮点表示

在计算机中,小数点不用专门的器件表示,而是按约定的方式标出。

根据小数点的位置是否固定,在计算机中有两种数据格式:定点表示和

'4学点表示o

3.2.1定点表示法

定点数是指小数点固定在某个位置上的数值。通常有小数和整数两

种表示形式。

1.定点小数

小数点的位置固定在最高有效数位之前、符号位之后时,机器内的

数称为纯小数。记作Xs.X】X2…X。,其中表示符号位,这个数是一个纯

小数,如图3-2所示。定点小数的小数点位置是隐含约定的,小数点并不

需要真正占据一个二进制位。

第三章182011-12-31

当Xs=O、X.l、Xz=l、…、x『l时,X为最大正数,即X最大正数=(l-2n)

当X§=0、X]=0、…、Xn_j=0>X01时,X为最小正数,即X最小正数=2华

当Xs=l时,表示X为负数,此时情况比较复杂,因为在计算机中带符号

的数可以用补码表示,也可以用原码表示。如前所述,原码与补码所表示

的绝对值最大的负数是不同的,所以原码和补码的表示范围有一些差别。

设机器字长有n位,贝I」:

原码定点小数表示位的范围为:一(1—2-n)〜(1—2-n)。

补码定点小数表示位的范围为:一1〜(1—2-n)o

图3-2定点小数格式

第三章192011-12-31

2.定点整数

小数点的位置隐含固定在最低有效数位之后时,机器内的数称为纯

整数。记作XsX]X2…Xn,这是一个纯整数,如图3-3所示。

图3-3定点整数格式

n

原码定点整数表示位的范围为:一(2n—1)〜(2—1)O

11n

补码定点整数表示位的范围为:-2〜(2—1)o

X最小正数二1

第三章202011-12-31

在定点表示法中,参加运算的数以及运算的结果都必须保证在该

定点数所能表示的数值范围内。如遇到绝对值小于最小正数的数,被

当作机器0处理,称为“下溢”;而大于最大正数和小于绝对值最大的

负数的数,统称为“溢出”。这时计算机将暂时中断运算操作,去进

行溢出处理。

只能处理定点数的计算机称为定点计算机。由于小数点的位置固

定不变,因此当机器处理的数不是纯小数或纯整数时,必须设定一个

比例因子,把原始的数缩小成定点小数或扩大成定点整数后再进行处

理,所得到的运算结果还必须根据比例因子还原成实际的数值。选择

合适的比例因子非常重要,必须保证参加运算的初始数据、中间结果

和最后结果都在定点数的表示范围之内,否则将会产生“溢出”。

第三章212011-12-31

322浮点表示法

i.浮点数的表示形式

使用定点表示法能表示以o为中心的一定范围的正、负的整数或小数。

实际上计算机中处理的数不一定是纯小数或纯整数,而且有些数据的数

值范围相差很大,它们都不能直接用定点数表示,但均可用浮点数表示。

浮点数即小数点的位置可以浮动的数,如

325.78=3.2578X102=3257.8XIO-1=0.32578X103

显然,这里小数点的位置是变化的,但因为分别乘上了不同的10的

方幕,因此值不变。通常浮点数可表示成

N=MXrE

式中M为尾数(可正可负),E为阶码(可正可负),r是基数(或基

值)。在大多数计算机中,尾数为纯小数,常用原码或补码表示;阶码

为定点整数,常用补码表示;基数可取2、4、6、8、16等,通常厂2。

第三章222011-12-31

浮点数在机器中的形式如图3-4所示。采用这种数据格式的机器称

为浮点机。浮点数的基数是隐含的,在整个机器数中不出现。阶码的符

号位为es,阶码的大小反映了在数N中小数点的实际位置;尾数的符号位

为叫,它也是整个浮点数的符号位,表示了该浮点数的正、负。

可见,浮点数有阶码和尾数两部分组成。浮点数的表示范围主要由

阶码决定,有效数字的精度主要由尾数就决定。

1位<k位>1位<n位

m

0

阶码E尾数M

图3・4浮点数的一般格式

第三章232011-12-31

2.浮点数的表示范围

设某浮点数的格式如图3-4所示,k和n分别表示阶码和尾数的位数

(不包括符号位),尾数和阶码均用补码表示。

当es=O,ms=0,阶码和尾数的数值位各位都为1(即阶码和尾数都为

最大正数)时,该浮点数为最大正数:

X最大正数=(1-2»2

当e§=l,ms=0,尾数的最低位irin=l,其余各位为0(即阶码为绝对

值最大的负数,尾数为最小正数)时,该浮点数为最小正数:

ck

X最小正数=2、2-2

当es=0,阶码的数值位全为1;ms=l,尾数的数值位全为0(即阶码

为绝对值最大的正数,尾数为绝对值最大的负数)时,该浮点数为绝对

值最大负数:

V—_]*?2T

八绝对值最大的负数一n

第三章242011-12-31

3.浮点数的规格化

为了提高浮点数的精度,必须充分利用尾数的有效位数,通常采取

浮点数规格化形式,即规定尾数的最高位数必须是一个有效数值。如果

不是规格化数,就要通过修改阶码并同时左右移尾数的方法,使其变成

规格化数。将非规格化数转换成规格化数的过程叫做规格化。对于基数

不同的浮点数,因其规格化数的形式不同规格化过程也不同。

一个浮点数的表示形式不是唯一的。例如二进制数0.0001011可表

示为0.001011X2T、0.01011X2-2>0.1011X2—3…,而其中只有

0.10HX2-3是规格化数。

在尾数用原码表示时,规格化浮点数的尾数的最高数位总等于1。

第三章252011-12-31

3.2.3浮点数阶码的移码表示法

浮点数的阶码是带符号的定点整数,因此它可以用前面介绍的任何

一种机器数的表示方法来表示。但在大多数计算机中,多采用补码表示

法或另外一种编码方法——移码表示法。

设定点整数的移码形式为X0X]X2…Xn,字长为n+1位,则移码的定义为

[X]移=2n+X-2n<X<2n

式中:[X]移表示移码,X为真值。

根据定义可知,移码就是真值X加一个常数2%相当于X在数轴上向

正方向平移了2n个单位,由此而得“移码”之称。移码也可称为增码或

偏码,常数2n称为偏置量或偏置值。

将移码的定义和补码的定义相比较,可以找出移码和补码之间的关系:

X0<X<2n

因为

2n+,+X=2n+,-IXI-2"<X<0

第三章262011-12-31

表3-2给出了移码、补码和真值之间的关系。

表3・2移码、补码和真值之间的关系

真值X(十进制)真值X(二进制)[X]补[X]移

-128-100000001000000000000000

-127-11111111000000100000001

••••••••••••

-1-00000011111111101111111

000000000000000010000000

100000010000000110000001

••••••••••••

12711111110111111111111111

第三章272011-12-31

从表3-2中,可看出移码具有以下特点:

(1)在移码中,最高位为“0”表示负数,最高位为“1”表示正数,这

与原码、补码、反码的符号位取值相反;

(2)移码全为0时,它所对应的真值最小;全为1时所对应的真值最大。

因此移码的大小直观地反映了真值得大小,有助于两个浮点数进行阶码

的大小比较;

(3)真值0在移码中的表示形式也是唯一的,即[+0]补二[-0]补

=100...0;

(4)移码把真值映射到一个正数域,所以可将移码视为无符号数,直

接按无符号数规则比较大小;

(5)同一数值的移码和补码除最高位相反外,其他各位相同。

(6)移码的偏置量并不唯一,根据所要表示的移码值范围来选择不同

的偏置量,需要注意的是IEEE754的标准中8位二进制的偏移量的取值为

127。

第三章282011-12-31

3.2.4实用浮点数举例

在现代计算机中,浮点数一般采用国际标准IEEE754,这种标准的

形式如图3-5所不。

ms阶码(含阶符)尾数

数符小数点位置

图3-5IEEE754标准的浮点数形式

第三章292011-12-31

按照IEEE754标准,常用的浮点数有三种,它们具体的格式见表3-3。

表3・3IEEE754标准中的三种浮点数

类型数符阶码尾数总位数偏置值

r^3

短浮点数18327FH

长浮点数11152643FFH

临时浮点数11564r^o3FFFH

下面以32位的短浮点数为例,讨论浮点代码与真值之间的关系。最高

位为数符位;其后是8位阶码,以2为底,阶码的偏置值为127;其余23位

是尾数。为了使尾数部分能表示多一位的有效值,IEEE754标准采用隐含

尾数最高数位1的方法(即这一位1不表示出来),因此尾数实际上是24位。

需要注意的是,隐含的1是一位整数(即位权为2。)。在浮点格式中表示

出来的23位尾数是纯小数,并用原码表示。

第三章302011-12-31

例3-3:将(56.25)I。转换成短浮点数。

解:(1)把十进制数转换成二进制数

(56.25)10二(111000.01)2

(2)规格化二进制数

111000.01=1.1100001X25

(3)算出移码(阶码真值+偏置值)

101+01111111-10000100

(4)短浮点数格式存储该数

因为

符号位二0

阶码二10000100

尾数二11000010000000000000000

所以短浮点数代码为:0;10000100;11000010000000000000000

表示为十六进制的代码为:42610000Ho

第三章312011-12-31

例3-4:把短浮点数C1C90000H转换成十进制数。

(1)把十六进制数转换成二进制数,并分离出符号位、阶码和尾数

因为C1C90000H二11000001110010010000000000000000

所以,符号位二1

阶码二10000011

尾数二10010010000000000000000

(2)计算出阶码真值(移码一偏置值)

10000011-01111111=100

(3)以规格化二进制数形式写出此数

1.1001001X24

(4)写成非规格化二进制数形式

11001.001

(5)转换成十进制数,并加上符号位

(11001.001)2二(25.125)10

所以,该浮点数为-25.125

第三章322011-12-31

3.3数值运算

3.3.1定点四则运算

定点四则运算包括加、减、乘、除运算。

1.补码加法运算

上一节我们介绍了数的补码表示法,负数用补码表示后,就可以和

正数一样来处理。这样,运算器里只需要一个加法器就可以了,不必为

了负数的加法运算,再配一个加法器。

补码加法的公式是:

[X]补+[Y]补=[X+Y]补(mod2)

上述公式表明,在模2意义下,任意两个数的补码之和等于该两个

数之和的补码。这是补码加法的理论基础,其结论也适用定点整数。

补码加法有以下特点:一是符号位要作为数的一部分一起参加运算;

二是要在模2的意义下相加,即超过2的进位要舍去。

第三章332011-12-31

2.补码减法运算

负数的加法要利用补码化为加法来做,减法运算当然也要设法化为

加法来做。之所以使用这种方法而不直接使用减法,是因为它可以和常

规的加法运算使用同一个加法器电路,从而简化了计算机的设计。

补码减法运算的公式为:

[X—Y]补=[X]补一[Y]补=[X]补+[—Y]补(mod2)

因此,若机器数采用补码,当求X—Y时,只需先求LY]补(称[—

Y]补为“变补”后的减数),就可以按照补码加法规则进行运算。而[—

Y]补由[Y]补连同符号位在内,每位取反,末位加1而得。

第三章342011-12-31

3.溢出判断

在定点小数机器中,数的表示范围为|X|VI。在运算过程中如出现

大于1的现象,称为“溢出”。在定点中,正常情况下溢出是不允许的。

两个正数相加,结果大于机器所能表示的最大正数,成为正溢。而

两个负数相加,结果小于机器所能表示的最小负数,成为负溢。如图3-

6所示,对定点正数而言,也同样存在正溢、负溢问题。

负溢<一可表示的数一》正溢

-10+1

图3-6定点小数的溢出

第三章352011-12-31

为了保证计算的正确性,我们必须要对溢出进行检测。判断“溢出”

是否发生,可采用两种检测方法。第一种方法是采用双符号位法,这称

为“变形补码”或“模4补码”,从而使模2补码所能表示的数的范围扩

大了一倍。采用变形补码后,任何小于1的正数,两位符号位都是“0”;

任何大于一的1负数,两个符号位都是“1”,两个数相加后,其结果的

符号出现“01”或“10”两个组合时,表示发生溢出。这是因为两个绝对

值小于1的数相加,其结果不会大于或等于2,而最高符号位永远表示结

果的正确符号。

第三章362011-12-31

我们可以得出如下结论:

(1)当以模4补码运算,运算结果的两个符号位相异时,表示溢出;

相同时,表示未溢出。所以溢出逻辑表达式为V二SfRf2,其中$门和S’2分

别表示为最高符号位和第二符号位。此逻辑表达式可用异或门实现。

(2)模4补码相加的结果,不论是否溢出,最高符号位始终表示正确

的符号。

(3)第二种溢出检测的方法是采用单符号位法。从例9和例10中可看

出,当最高有效位产生进位而符号位无进位时,产生正溢;当最高有效

位无进位而符号位有进位时,产生负溢。所以溢出逻辑表示式为V=CfC0,

其中Cf表示符号位产生的进位,C。表示最高有效位产生的进位。此逻辑

表达式也可用异或门实现。

在定点机中,当运算结果发生溢出时,机器通过逻辑电路自动检测

出这种益处,并进行中断处理。

第三章372011-12-31

4.乘法运算

与加法和减法相比,无论是用硬件还是用软件来完成。乘法都是一

个复杂的操作。各种各样的算法已用于各类计算机中。我们先介绍两个

无符号整数相乘的过程,然后再介绍实现两个补码表示数的乘法的最普

遍的技术。

(1)无符号整数乘法

由图3・7所示的手工乘法过程,可得到如下几点重要结论:

1011被乘数11

X1101乘数13

1011

0000

1011

1011

10001111

图3-7无符号二进制乘法

第三章382011-12-31

1)乘法涉及到部分积的生成,乘数的每一位对应一个部分积。然后,

部分积相加得到最后的乘积。

2)部分积是容易确定的。当乘数的位是0时,其部分积也是0;当乘

数的位是1时,其部分积是被乘数。

3)部分积通过求和而得到最后乘积。为此,后面的部分积总要比它

前面的部分积左移一个位置。

4)两个n位二进制整数的乘法导致其积的长度为2n位。

与手工演算相比,计算机能做几件事使操作更有效。首先,可以边产

生部分积边做加法,而不是等到最后再相加。这就取消了存储所有部分

积的需求;只需要少数几个寄存器。其次,我们能节省某些部分积的生

成时间,对于乘数的每个1,需要加和移位两个操作;但对于每个0,则

只需移位操作。

第三章392011-12-31

图3-8表示了一种采用此方式的实现方案。

乘数和被乘数分别装入两个寄存器(Q和M)。还需要第三个寄存

器A,初始设置为0。还需要一个1位寄存器C,初始值为0,用于保存加

法可能产生的进位。

被乘数

乘数

图3-8无符号二进制乘法实现硬件

第三章402011-12-31

乘法器的操作如下。控

制逻辑每次读乘数的一位。

若Qo是1,则被乘数与A寄存

器相加并将结果存于A寄存

器。然后,C、A和Q各寄存

器的所有位向右移一位,于

是C位进入A。/,进入Qz,

而Qo丢失。若Qo是0,则只

需进位,无需完成加法。对

原始的乘数每一位重复上述

过程。产生的2n位积存于A

和Q寄存器。这种操作的流积在A,Q中

程图如图3-9所示。

图3-9无符号二进制乘法流程图

第三章412011-12-31

(2)补码乘法

在计算机中带符号数一般都用补码表示,补码的加减法非常简单,

在以加减运算为主的通用机中,操作数都用补码表示,所以这类计算机

在做乘法时也使用补码。

最常用的补码乘法算法是Booth算法,又称比较法。

设被乘数[X]补=Xs.XRz…X/乘数[Y]补=Ys.YM…Yn。在乘数的最低位

置后增加一位附加位Ya,它初值为3增加附加位不会影响运算结果。

每次运算取决于乘数相邻两位Yj+1的值,把它们称为乘法的判断

位。这种运算是根据乘数相邻两位的比较结果(Yi+1—Yj)来确定运算操

作,因此称为比较法。

第三章422011-12-31

Booth算法规则如下:

1)参加运算的数用补码表示;

2)符号位参加运算;

3)由于每求一次部分积要右移一位,所以乘数的最低两位Yn、Yn+1的

值决定了每次执行的操作,如表3-4所示;

4)移位按补码右移规则进行,右移前:XX]X2…X,右移后:XX

X]・・・Xn_2Xn_p

5)共需要进行n+1次累加,n次移位。

表3-4Booth乘法运算操作

判断位丫口、Y/]I

0~0原部分积右移一位

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

10原部分积加[—x]补后右移一位

11原部分积右移一位

第三章432011-12-31

图3-10给出了Booth算法的框图。被乘数和乘数分别放入B和C寄存

器内。乘法的结果将出现在A和C寄存器中。A和附加位CM初始化为0。

运算过程中,控制逻辑每次扫描C寄存器中的最低两位CnG+i。若两位

相同(11或00),则A、C寄存器的所有位向右移一位。若两位不同,当

时,则A寄存器的内容加B寄存器的内容(即被乘数);当

CnCn+i=l。时,A寄存器的内容减去B寄存器的内容被乘数(即加上B寄

存器中内容的反),加减之后再右移。无论哪种情况,右移是这样进行

的:A的最左位,即A一位,不仅要移入A。?,而且还要保留在A-中。

这要求保留A和C中的符号。这种移位方式称为算术移位(Arithmetic

Shift),因为它保留了符号位。

第三章442011-12-31

图3-10补码乘法的Booth算法

第三章452011-12-31

5.除法运算

除法要比乘法更复杂,但也是基于同样的通用原则。如上所述,算法

的基础是纸和笔的演算方法,而且操作涉及到重复的移位和加减法。

00001101商

除数1011)10010011被除数

1011

部分余001110

1011

001111

________1011

100余数

图3-11无符号二进制整数除法

第三章462011-12-31

图3-11表示的是一个无符号二进制整数长除的例子。首先,从左到右

检查被除数的位,直到被检查的位所表示的数大于或等于除数;这被称

为除数能去“除”此数。直到这个事件出现之前,一串0从左到右放入

商中,。当事件出现时,一个1放入商并且由此部分被除数中减去除数。

结果被称为部分余(PartialRemainder),由此开始除法呈现一种循

环样式。在每一循环中,被除数的其他位续加到部分余上,直到结果大

于或等于除数。同前,由这个数减去除数并产生新的部分余。此过程继

续下去,直到被除数的所有位都被用完。

事实上,机器的运算过程和人毕竟不同,人会心算,一看就知道够不

够减。但机器却不会心算,必须先做减法,若余数为正,才知道够减;

若余数为负,才知道不够减。不够减时必须恢复原来的余数,以便再继

续往下运算,这种方法称为恢复余数法。

第三章472011-12-31

要恢复原来的余数,只要当前的余数加上除数即可。但由于要恢复余

数,使除法进行过程的步数不固定,因此控制比较复杂。实际中常用不

恢复余数法,又称加减交替法。其特点是运算过程中如出现不够减,则

不必恢复余数,根据余数符号,可以继续往下运算,因此步数固定,控

制简单。

加减交替法的规则是:当余数为正时,商“1”,余数左移一位,减除

数;当余数为负时,商“0”,余数左移一位,加除数。

第三章482011-12-31

3.3.2浮点四则运算

1.浮点加法、减法运算

设有两个浮点数X和Y,它们分别为

X=2LxX

Y=。Yx2EY

其中Ex和Ey分别为数X和Y的阶码,Mx和%为X和Y的尾数。

两个浮点数进行加法和减法的运算规则是:

EX-EYEY

Z=X±Y=(MxX2±MY)X2EX<EY

由于浮点数尾数的小数点均固定在第一数值位前,所以尾数的加减运算

规则与定点数完全相同。但由于其阶码的大小有直接反映尾数有效值的

小数点位置,因此当浮点数阶码不等时,因两尾数小数点的实际位置不

一样,尾数部分无法直接进行加减运算,因此必须先进行“对阶”,

使两数的小数点位置对齐。

第三章492011-12-31

完成浮点数加减法运算的操作过程大体分为四个基本步骤:

(1)0操作数检查;

(2)比较阶码并完成对阶;

(3)尾数进行加或减运算;

⑷规格化结果并进行舍入处理。

图3・12所示为浮点数加减运算的操作流程图。

第三章502011-12-31

图3-12浮点加减运算的操作流程

第三章512011-12-31

第一步为0操作数检查,如果判知两个操作数X或Y中有一个数为0,那

么另一个数即为运算结果,而没有必要再进行后续的一系列操作,以节

省运算时间。

第二步是使两个操作数的指数相同。两个浮点数进行加减,首先要

看两个数的阶码是否相同,即小数点位置是否对齐。若两个数阶码相同,

表示小数点是对齐的,就可以进行尾数的加减运算。反之,若两个数阶

码不同,表示小数点位置没有对齐,此时必须使两个数阶码相同,这个

过程叫做对阶。

第三步是尾数求和运算,包括它们的符号。不论是加法还是减法,都

按加法进行操作,其方法与定点加减运算完全相同。

最后一步是规格化结果。若尾数部分得到的结果不是规格化数,必须把

它变成规格化数。对于双符号来说,规格化数的形式是001义…X或

110X...Xo

第三章522011-12-31

规格化处理的规则如下:

1)结果尾数的两个符号位值不同(01或10),这就表明尾数运算结果

溢出,应进行右规格化处理,即将结果尾数向右移一位,并将阶码值加

lo

2)若结果尾数运算不溢出,但最高数位值与符号位的值相同,这就表

明不符合规格化规则,应进行左规格化处理,这时应将结果尾数重复左

移,每移一位阶码减1,知道出现最高数值位与符号位的值不同为止。

在对阶或向右规格化时,尾数要向右移位。这样被移位的尾数的低位

部分就会被丢掉,从而造成一定的误差,因此要进行舍入处理。简单的

舍入如处理方法有两种:一种是“0舍1入”法,即如果右移时被丢掉的

数位的最高位为0则舍去,为1则将尾数的末位加1。另一种方法是“恒

置1”法,即只要数位被移掉,就在尾数的末位恒置1。

第三章532011-12-31

在IEEE754标准中,舍入处理提供了四种可选方法:

♦就近舍入:结果被舍入成最近的可表示的数。其实质就是通常所说

的“四舍五入”。例如,尾数超出规定的23位的多余位数字是10010,

多于位的值超过规定的最低有效位值的一半,故最低有效位应增1。若

多余的5位是01111,则简单的截尾即可。对多余的5位10000这种特殊情

况:若最低有效位现在为0,则截尾;若最低有效位现为1,则向上进1

位使其变为0。

♦朝+8舍入:结果向正无穷大方向取舍。对正数来说,只要多余位不

全为0,则向最低有效位进1;对负数来说,则是简单的截尾。

♦朝一8舍入:结果向负无穷大方向取舍。对正数来说,则是简单的截

尾;对负数来说,只要多余位不全为0,则向最低有效位进1。

♦朝0舍入:结果朝0取舍。即朝数轴原点方向舍入,就是简单的截尾。

无论尾数是正数还是负数,截位都使取值的绝对总值比原值的绝对值小。

这种方法容易导致误差。

第三章542011-12-31

2.浮点乘法、除法运算

(1)浮点乘法、除法运算规则

设有两个浮点数X和Y:

可见,乘积的尾数是相乘两数的尾数之积,乘积的阶码是相乘两数的

阶码之和。当然,这里也有规格化和舍入等步骤。

设有两个浮点数X和Y:

第三章552011-12-31

(2)浮点乘法、除法运算步骤

浮点数的乘除运算大体可分为四步:第一步,0操作数检查;第二步,

阶码加/减操作;

第三步,尾数乘/除操作;第四步,结果规格化及舍入处理。

图3-13所示为浮点乘法的流程图。无论哪个操作数为0,乘积即为0。

下一步是指数相加。若指数是移码(偏移值指数)形式,指数的和将会

有双倍的偏置值,故应从和中减去一个偏置值。可能会出现指数上溢或

下溢,此时应结束算法并报告。

若积的指数在一个恰当的范围内,则下一步应是有效数相乘,包括它

们的符号一起考虑。有效数相乘与整数相乘的方法相同。积的长度将是

被乘数和乘数的长度的两倍,多余的位将在舍入期间丢失掉。

得出乘积之后,下一步则是结果的规格化和舍入处理,同加、减法所做

的一样。注意,规格化可能导致指数下溢出现。

第三章562011-12-31

图3-13浮点乘法的流程图

第三章572011-12-31

图3-14所示为浮点除除法

法流程图。第一步是测试

x=o?A阶码相减

0,若除数为0,或报告出

Y,V

加偏移

错,或认为是一个无穷大Z

的数,取决于具体的实现。

工A溢出报告

返回工酚码溢出?

若被除数是0,则结果是0。K7

下一步是被除数的指数减爸码下溢?>报告下溢

除数的指数。这个过程把V

\r

偏置值去掉了,所以必须尾数相除I返回

加上偏置值。然后对指数规格化

上溢或下溢进行测试。▼

舍入

V

返回

图3/4浮点除法流程图

第三章582011-12-31

3.4算术逻辑运算单元ALU

针对每一种算术运算,都必须有一个相应的基本硬件配置,其核心部

分是加法器和寄存器。当需要完成逻辑运算时,势必需要配置相应的逻

辑电路,而ALU电路是既能完成算术运算又能完成逻辑运算的部件

3.4.1ALU电路

图3-15是ALU框图。图中Aj和玛为输入变量;彩为控制信号,&的不同

取值可决定该电路做哪种逻辑运算;Fj是输出函数。

图3-15ALU框图

第三章592011-12-31

为了实现算术/逻辑多功能运算,则必须对全加器(F

温馨提示

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

评论

0/150

提交评论