第6章计算机的运算方法2014_第1页
第6章计算机的运算方法2014_第2页
第6章计算机的运算方法2014_第3页
第6章计算机的运算方法2014_第4页
第6章计算机的运算方法2014_第5页
已阅读5页,还剩186页未读 继续免费阅读

下载本文档

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

文档简介

第六章计算机的运算方法与运算器计算机组成原理2014年3月6日6.1.1非数值数据表示法字符表示法汉字表示法1、ASCII码使用7bit表示128个字符From0000000to111111127=128注意:ASCII中的数字字符和数字本身不相等几乎所有计算机均支持该代码集但不是所有语言都能用128个字符表示1

1

0

1

1

0

0

1

7

6

5

4

3

2

1

0

计算机利用寄存器存储数据寄存器中每个位称bit(BinaryDigiT)最高有效位

(MSB)最低有效位

(LSB)

MSBMostsignificantbit

LSBLeastsignificantbit专用名词2、汉字表示法8bit数据仅能表示256个字符,常用汉字6000多个,故其无法表示汉字GB2312国家标准采用16位表示与ASCII字符的区别,最高有效位MSB=1内码,外码(输入法),字模码(显示用)GB2312-80国家标准1981年,GB2312-80国家标准,包括6763个汉字/682个非汉字字符,称为国标码或国际交换码

GB2312字符集的构成:一级常用汉字3755个,按汉语拼音排列二级常用汉字3008个,按偏旁部首排列非汉字字符682个汉字标准GB2312-1980(GB0)(简体)6763个汉字

GB13000-199320902个汉字

(Unicode1.1版本)汉字扩展规范GBK1.0

标准1995(非国家标准)21003个字符(兼容GB2312)GB18030-2000(1/2/4字节编码)27484汉字

(向下兼容GB2312GBK,GB13000)

字模码介绍字模码是用点阵表示的汉字字型代码,是汉字的输出形式。

字模点阵的信息量是很大的,所占存储空间也很大。以16*16为例,每个汉字要占用32个字节,因此字模点阵只能用来构成汉字库,而不能用于机内存储。6.1.2进制转换二进制数转八进制二进制数转十六进制二进制数转十进制十进制数转二进制1、二进制转十进制从二进制数求其十进制的值,逐位码权累加求和10010001=1×27+0×26+0×25+1×24+0×23

+0×22+0×21+1×20å-=mkiiirDN*=例如:写出(1101.01)2,(237)8,(10D)16的十进制数(1101.01)2=1×23+1×22+0×21+1×20+0×2-1+1×2-2=8+4+1+0.25=13.25(237)8=2×82+3×21+7×20=128+24+7=159(10D)16=1×162+13×160=256+13=2692、二到八或十六进制转换

二进制转到八进制

从小数点向左右三位一分组

(10011100.01)2=(234.2)8

010

二进制转十六进制

从小数点向左右四位一分组

(10011100.01)2=(9C.4)16

0100

说明:整数部分不足位数对转换无影响,小数部分不足位数要补零凑足,则出错。3、十进制转二进制整数部分除2取余

小数部分乘2取整211222521011010.625*210.25*200.5*21

0.0除尽为止1011低高高低求得位数满足要求为止4、进制转换的简单运算方法-17/128的二进制表示方法???大数的转换方法,记住几个常用的2的幂25=3226=6427=12828=25629=512210=1024(1Kilo)211=2048212=4096213=8182214=16364215=32728216=65536220=1048576(1Mega)230=1073741824(1Giga)240=1Tera更大的单位是多少?250=1

Peta

260=1Exa

270=1

Zetta

280=1Yotta

6.2数据的表示方法

6.2.1数据格式

计算机中常用的数据表示格式有两种:(1)定点格式(2)浮点格式

定点格式(小数点位置固定)容许的数值范围有限,但要求的处理硬件比较简单。

浮点格式(小数点位置浮动)容许的数值范围很大,但要求的处理硬件比较复杂。1.

定点数的表示方法定点表示:约定机器中所有数据的小数点位置是按约定固定不变的,小数点就不再使用记号“.”来表示。定点数据的形式:纯小数或纯整数。

(设:定点数表示为x=x0x1x2…xn

其中:x0符号位,0代表正号,1代表负号)小数点的位置约定在符号位x0的后面(不显示)小数点的位置约定在数值位xn的后面(不显示)

例:

X=+1010110.纯整数:X=01010110.正数,符号位取0Y=-1101001.纯整数:Y=11101001.负数,符号位取1X=+0.11011Y=-0.10101符号位取0纯小数:X=0.11011符号位取1纯小数:X=1.10101纯整数:X=01010110符号位取0纯整数:Y=11101001符号位取1符号位取0纯小数:X=0.11011符号位取1纯小数:X=1.10101注意到:无论是整数或是小数,在机器数的表示中,都不出现小数点“.”,只是约定其位置。2、浮点数的表示方法

例:156.78 =15.678×101

=

1.5678×102

=0.15678×103=M×RE其中:M为尾数;R为基数;E为阶码(指数)。二进制数在定点计算机中,一般约定:尾数|M|<1.0,并按此原则确定各数据的浮点表示格式。∴上例+156.67=0.15678×103

(规格化表示法)同理:对于二进制数+1011.1101=+0.10111101×2+4

=0.10111101×2+100=M×RE那么,计算机中究竟采用哪种数据形式?显然存在多种数据形式可见: 一个机器浮点数由阶码E和尾数M及其符号位组成。约定:尾数M用定点小数表示,给出有效数字的位数,M决定了浮点数的表示精度;

阶码E:用整数形式表示,指明小数点在数据中的位置,其决定了浮点数的表示范围。∴浮点数的一般形式为:阶符阶码值数符尾数值JEm-2…………E0S

D-1…………...D-(n-1)按照IEEE754的标准,32位浮点数和64位浮点数的标准格式为:其中:S=浮点数的符号位,0表示正数,1表示负数。

M=尾数,23位,用纯小数表示。E=阶码,8位,阶符采用隐含方式,即采用移码方式来表示正负指数。

其中:S=浮点数的符号位,0表示正数,1表示负数。

M=尾数,52位,用纯小数表示。E=阶码,11位,阶符采用隐含方式,即采用移码方式来表示正负指数。SEMSEM31302322063625251032位浮点数64位浮点数几点注释:

为了提高数据的表示精度,当尾数的值不为0时,其绝对值|M|应≥0.5,即:尾数绝对值域的最高有效位应为1,否则通过修改阶码同时左右移小数点的办法,使其变成这一表示形式,这称为浮点数的规格化表示。浮点数所表示的范围显然远比定点数大。以下两种情况计算机都把该浮点数看成零值,称为机器零。⑴当浮点数的尾数M为0;(不论其阶码E为何值)⑵当阶码E的值<Emin值时。(不管其尾数M为何值)

例子

设机器数字长为24位,欲表示±3万的十进制数,试问在保证数的最大精度的前提下,除阶符、数符各取1位外,阶码、尾数各取几位?满足最大精度可取

m=4,n=18解:215×0.×××…

…××15位…m=4、5、615

位二进制数可反映±3万之间的十进制数∴215

=32768214

=16384∵6.2.2数的机器码表示

基本思想:把符号位和数字位一起编码来表示一个 实际的数。主要表示方法有:原码、补码、反码、移码等。各种编码表示的数称为机器数或机器码;其对应的真实数值称为该编码对应的真值。1.原码表示法若定点小数为x=±0.x1x2…xn,则其原码表示的定义是:式中[x]原是机器数,x是真值。例如,x=+0.1001,则[x]原=0.1001x=-0.1001,则[x]原=1.1001数值符号x1>x≥01-x=1+|x|0≥x>-1定点小数符号位

小数点位置

数值部分

X0X1X2X3…

XnX01

1

1

1

X00

0

0

1

2-n≦|X|≦1-2-n下溢/上溢最低有效位最高有效位对于定点整数

x=±x1x2…xn,则原码的定义是:对于定点整数,其原码形式为:

[x]原=x0x1x2…xn,注意到:原码机器中“+0”、“-0”有两种形式:对于定点小数:[+0]原=0.000…0[-0]原=1.000…0对于定点整数:[+0]原=0000…0.[-0]原=1000…0.x2n>x≥02n-x=2n+|x|

0≥x>-2n符号数值定点整数符号位

小数点位置

数值部分

X0X1X2X3…

XnX01

1

1

1

X00

0

0

1

1

≦|X|≦2n-1上溢最高有效位最低有效位2.补码表示法

补码的概念(以钟表对时为例)

假设现在的标准时间为4点正;而有一只表已经7点了,为了校准时间,可以采用两种方法:一是将时针退7-4=3格;一是将时针向前拨12-3=9格。显然:这两种方法都能对准到4点,由此可以看出,减3和加9是等价的。所以称:当模数Mod=12时,9是(-3)补码。用数学公式表示:-3=+9 (mod12)“模”表示被丢掉的数值。上式在数学上称为同余式。

∴设某数为x,当Mod=12时,x-3=x+9、x+7=x-5都是等价的。从这里可以得到一个启示,就是负数用补码表示时,可以把减法转化为加法。补码的定义:

1、定点小数例如x=+0.1011,则[x]补=0.1011;x=-0.1011,则[x]补=10+x

=10.0000-0.1011

=1.0101正数的补码就是本身负数的补码需作运算x1>x≥02+x=2-|x|0≥x≥-1(mod2)10.0000

-0.10111.0101小数:X1-2-(n-1)≥X≥0

[x]补=2+X=2-|X|0>X≥-1完成下列数的真值到补码的转换X1=+0.1011011X2=-0.1011011[X1]补=01011011[X2]补=10100101

根据补码定义,求负数的补码时需作一次减法运算,这显然不是补码方法的初衷。后面将介绍反码表示法可以解决负数的求补问题。2、定点整数例:已知 x=+10111, y=-11011,求[x]补、[y]补

(n=5)按定义:[x]补=010111 [y]补=25+1+y=1000000-11011=100101x2n>x≥0

2n+1+x=2n+1

-|x|

0≥x≥-2n(mod

2n+1)

100000011011100101注:上式机器数的位数为n+1整数:

X2(n-1)-1

≥X≥0

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

2(n-1)完成下列数的真值到补码的转换X1=+01011011X2=-01011011[X1]补=01011011[X2]补=10100101注:0的补码只有一种形式对于定点小数:[+0]补=[-0]补=0.0000

对于定点整数:[+0]补=[-0]补=00000.

因此,补码的表示范围相对于原码、反码来讲多一种,定点小数可以表示-1,n+1位定点整数可以表示-2n。3.反码表示法二进制数求反:就是二进制的各位数码0变为1,1变为0。即:若xi=0,则=1。若xi=1,则=0.对定点小数,反码的定义参见书。正数的反码就是本身负数的反码则是符号位为1,数值位求反。x1>x≥0(2-

2-n)

+x=(2-

2-n)_|x|0≥x>-1ixix由上式可以得出:[x]反+|x|=1.111…1=10.0…0-0.00…1

=2-

2-n得出:[x]反=(2-2-n)+x

0≥x>-1比较反码与补码的公式

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

[x]补=2+x可得到:[x]补=[x]反+2-n由此可知一个由反码求补码的重要公式,即:一个负数的补码,可以通过将该数符号位置1,其余取反,然后在最末位(2-n)上加1

的方法直接获得。4.移码表示法

在计算机中,移码通常用于表示浮点数的阶码。由于阶码一般取整数,所以移码通常只用于整数的表示。对定点整数,移码的定义是:

[x]移=2n+x

2n>x≥-2n(n为移码数值部分的位数)移码表示法[X]移=2n-1+X

2n-1-1

≥X≥

-2n-1

X1=01010101[X1]补=01010101[X1]移=11010101X2=-01010101[X2]补=10101011[X2]移=00101011移码在数轴上的表示定点小数没有移码定义平行移动移码为全0时表示真值最小,为-8;移码为全1时,表示真值最大,为+7

数值

15

7

-8

0

0

编码

例:若阶码数值部分为5位,以x表示真值,则

[x]移=25+x

25>x≥-25

又例:当正数x=+10101时,[x]移=1,10101

当负数x=-10101时,[x]移=25+x=25-10101=0,01011。注意到:移码中的逗号不是小数点,而是表示左边一位是符号位。显然,移码中符号位x0表示的规律与原码、补码、反码相反。移码的表示范围和补码一致,0只有一种表示方式,只是符号位正好相反。机器码表示法小结:在数据的四种机器表示法中,正数的原码、反码、补码等于真值,只有负数才分别有不同的表示方法。补码和移码的0只有一种表示方法,因此其表示范围相对于原码和反码多一种,定点小数可表示-1(移码没有小数形式),正数可表示-2n。移码表示法主要用于表示浮点数的阶码,可以直接比较大小。表示范围和补码相同,只有最高位相反。43

各种编码+3-103111+2-212110+1-3211010-430100-1+3+3+3011-2+2+2+2010-3+1+1+1001-40+0+0000移码补码反码原码Binary

NumberStoredNumberRepresented由于补码表示对加减法运算十分方便,因此目前机器中广泛采用补码表示法。在这类机器中数用补码表示,补码存储,补码运算。(也有些机器,数用原码进行存储和传送,运算时改用补码。还有些机器在做加减法时用补码运算,在做乘除法时用原码运算)6.3定点运算6.3.1移位运算1.移位的意义15米=1500厘米小数点右移2位机器用语15相对于小数点左移2位(小数点不动)..左移绝对值扩大右移绝对值缩小在计算机中,移位与加减配合,能够实现乘除运算2.算术移位规则1右移

添1左移

添00反码补码原码负数0原码、补码、反码正数添补代码码制符号位不变例6.16设机器数字长为8位(含一位符号位),写出A=+26时,三种机器数左、右移一位和两位后的表示形式及对应的真值,并分析结果的正确性。解:A=+26则[A]原

=[A]补

=[A]反

=0,0011010

+

60,0000110

+130,0001101+1040,1101000

+

520,0110100

+260,0011010移位前[A]原=[A]补=[A]反对应的真值机器数移位操作1212=+11010例6.17设机器数字长为8位(含一位符号位),写出A=–26时,三种机器数左、右移一位和两位后的表示形式及对应的真值,并分析结果的正确性。解:A=–26

–61,0000110

–131,0001101–1041,1101000

–521,0110100

–261,0011010移位前对应的真值机器数移位操作1212原码=–11010

–61,1111001

–131,1110010

–1041,0010111

–521,1001011–261,1100101移位前对应的真值机器数移位操作1212

–71,1111001

–131,1110011

–1041,0011000

–521,1001100–261,1100110移位前对应的真值机器数移位操作1212补码反码

原码、反码和补码之间的转换3.算术移位的硬件实现(a)真值为正(b)负数的原码(c)负数的补码(d)负数的反码000100丢

1丢

1出错影响精度出错影响精度正确影响精度正确正确4.算术移位和逻辑移位的区别算术移位有符号数的移位逻辑移位无符号数的移位逻辑左移逻辑右移低位添0,高位移丢高位添0,低位移丢例如01010011逻辑左移10100110逻辑右移01011001算术左移算术右移0010011011011001(补码)高位1移丢010100110Cy0101001100101100106.3.2

定点补码加/减法运算运算方法及实现补码加减法运算公式溢出检测补码加减法逻辑实现快速加法器补码加减法的实现[X+Y]补=[X]补+[Y]补两数和的补码等于两数补码之和[X–Y]补=[X]补+[-Y]补=[X]补-[Y]补

两数差的补码等于两数补码之差减法变加法,关键是求[-Y]补

[-Y]补=[[Y]补]补对[Y]补逐位取反,再在最低位加1补码加法公式证明[X+Y]补=[X]补+[Y]补x>0y>0(无需证明)x>0y<0x<0y>0(2/3证明相同)x<0y<0只需证明2/4两种情况即可(2)x>0y<0

[x]补=x[y]补=2+y[x]补+[y]补=x+2+y=2+(x+y)

当x+y<0时上式=[x+y]补(mod2)

当x+y>0时

2+(x+y)>2进位位舍去

[x]补+[y]补=2+(x+y)=x+y(mod2)=[x+y]补(mod2)(4)x<0y<0

x+y<0[x]补=2+x[y]补=2+y[x]补+[y]补=2+x+2+y=2+(2+x+y)mod2-1<x+y<0

故0<2+x+y<2

故2+(2+x+y)>22+(2+x+y)mod2=(2+x+y)=[x+y]补mod2补码减法公式证明[X-Y]补=

[X]补

-[Y]补????[X-Y]补=[X]补+[-Y]补

(加法公式)

[-Y]补=-[Y]补

????

[-Y]补+[Y]补=[Y+(-Y)]补=[0]补=0故[-Y]补=-[Y]补成立[-Y]补=[[Y]补]补[X-Y]补=[X]补+[-Y]补=

[X]补

-[Y]补补码加法的几种情况0.10101+0.010000.11101

0.10101+0.11000

.01101

11.10101+1.110001.01101

11.00101+1.11000

.11101

01正正得负,正溢出负负得正,负溢出正常结果符号位进位舍去,正常结果计算机如何识别运算结果是否溢出单符号数溢出检测1正正得负

负负得正

结果溢出设两数符号位为f0f1和数符号位fs

s10s10ffffffV+=单符号数溢出检测20.10101+0.010000.11101

0.10101+0.11000

.01101

11.10101+1.110001.01101

11.00101+1.11000

.11101

01符号位进位Cf,最高位进位CnCf

=

0,Cn

=

0Cf

=1,Cn

=1Cf

=0,Cn

=1Cf

=1,Cn

=0单符号数溢出检测2…

溢出信号V对应的真值表

110101011000VCn

Cf

nfCCVÅ=双符号数溢出检测00.10101+00.0100000.11101

00.10101+00.11000

.01101

0111.10101+11.1100011.01101

111.00101+11.11000

.11101

101非正常符号位,溢出符号位进位舍去,正常结果正常结果非正常符号位,溢出双符号数溢出检测溢出信号V对应的真值表

110101011000Vf2

f1

21ffVÅ=单符号补码加/减器电路实现方式控制MM=0加M=1减C0FAn-1Sn-1FAn-2FA1FA0Cn-1Cn-2C1Sn-2S1S0CnXn-1Yn-1Xn-2Yn-2X1Y1X0Y0减法的避免减少了逻辑器件控制信号M如何产生?符号位溢出位V

=1=1=1=1=14.补码加减法的硬件配置V0

A

nGAGS

加法器(n+1)溢出判断求补控制逻辑0

X

nA、X均n+1位用减法标记GS

控制求补逻辑6.3.3乘法运算1.分析笔算乘法A=–0.1101B=0.1011A×B=–0.100011110.11010.101111011101000011010.10001111符号位单独处理乘数的某一位决定是否加被乘数

4个位积一起相加乘积的位数扩大一倍×乘积的符号心算求得

?然而,人们习惯的算法对机器并不完全适用。原因之一:机器通常只有n位长,两个n位数相乘,乘积可能为2n位。原因之二:只有两个操作数相加的加法器难以胜任将n个位积一次相加起来的运算。早期计算机中为了简化硬件结构,采用串行的1位乘法方案,即多次执行“加法—移位”操作来实现。这种方法并不需要很多器件。然而串行方法毕竟太慢。随着大规模集成电路问世以来,出现了各种形式的流水式阵列乘法器,它们属于并行乘法器。2.笔算乘法改进A

•B=A

•0.1011=0.1A+0.00A+0.001A+0.0001A=0.1A+0.00A+0.001(A+0.1A)=0.1A+0.01[0•

A+0.1(A+0.1A)]=0.1{A+0.1[0•

A+0.1(A+0.1A)]}=2-1{A

+2-1[0•

A+2-1(A

+

2-1(A+0))]}①②⑧第一步被乘数A

+0第二步1,得新的部分积第八步1,得结果③第三步部分积

+

被乘数…右移一位3.改进后的笔算乘法过程(竖式)0.00000.11010.11010.11010.0000初态,部分积=0乘数为1,加被乘数乘数为1,加被乘数乘数为0,加01.001110.1001111.00011110.1101乘数为1,加被乘数0.100011111,得结果1011=0.01101,形成新的部分积1101=0.10011,形成新的部分积1110=0.01001,形成新的部分积1111=部分积乘数说明小结

被乘数只与部分积的高位相加

由乘数的末位决定被乘数是否与原部分积相加,然后

1形成新的部分积,同时乘数

1(末位移丢),空出高位存放部分积的低位。硬件3个寄存器,具有移位功能一个全加器

乘法

运算加和移位。n=4,加4次,移4次4.原码乘法(1)原码一位乘运算规则以小数为例设[x]原

=x0.x1x2

xn

…[y]原

=y0.y1y2

yn…=(x0

y0).x*y*[x

•y]原

=(x0

y0).(0.x1x2

xn)(0.y1y2

yn)……式中

x*=0.x1x2

xn

为x

的绝对值

…y*=0.y1y2

yn

为y

的绝对值

…乘积的符号位单独处理

x0

y0数值部分为绝对值相乘x*•

y*(2)原码一位乘递推公式x*•

y*=x*(0.y1y2

yn)…=x*(y12-1+y22-2++yn2-n)…=2-1(y1x*+2-1(y2x*+2-1(ynx*+0)))……z1znz0=0z1=2-1(ynx*+z0)z2=2-1(yn-1x*+z1)zn=2-1(y1x*+zn-1)………z0开始i=0,0→∑Yn=1

+0→∑∑

+X→∑∑

Y右移一位i+1→i

i=nX0⊕Y0→P0

结束Y

N

N

Y

原码乘法算法流程图

加法次数,n次作为加法,一定移位符号位单独计算例子已知X=0.1101Y=-0.1011计算[X]原

[Y]原

00.000000.1101

+

00.110100.011000.1101

部分积

01.0011100.10011100.0000

00.10011100.010011100.1101

01.000111100.10001111

乘数

1

Y0

Y0.1011

Y0.101

Y0.10

判断位

说明

P0=0Y4=1,+|X|右移一位得P1

Y4=1,+|X|

右移一位得P2

Y4=0,+0右移一位得P3Y4=1,+|X|右移一位得P4=|X|·|Y|

+

Y0.1

+

+

例题已知x=–0.1110y=0.1101求[x•y]原解:数值部分的运算0.00000.11100.11100.00000.11100.1110部分积初态z0=0部分积乘数说明0.011101.0001101.01101100.101101101,得

z4逻辑右移逻辑右移1101=0.01111,得

z10110=0.00111,得

z21011=0.10001,得

z31101=②数值部分按绝对值相乘①乘积的符号位

x0

y0=10=1x*•

y*=0.10110110则[x

y]原

=1.10110110特点绝对值运算逻辑移位例题结果用移位的次数判断乘法是否结束(3)原码乘法逻辑结构

Σ→R0

+1计数器

移位控制

加法器Σ

X0

被乘数X

R2

&&

R0部分积∑计数器

R1乘数Y

Yn

∑=∑+Yn|X|

∑=∑/2

控制电路

5.补码乘法设被乘数乘数[x]补

=x0.x1x2

xn…[y]补

=y0.y1y2

yn…①被乘数任意,乘数为正同原码乘法但加

和移位

按补码规则

运算乘积的符号自然形成②被乘数任意,乘数为负乘数[y]补,去掉符号位,操作同①

最后加[–x]补,校正(1)补码一位乘运算规则以小数为例③Booth算法(被乘数、乘数符号任意)设[x]补

=x0.x1x2

xn[y]补

=y0.y1y2

yn……[x

·y]补=[x]补(0.y1

yn)–[x]补

·y0…=[x]补(y12-1+y22-2++yn2-n)–[x]补

·y0…=[x]补(–y0+y1

2-1+y22-2++yn2-n)…=[x]补[–y0+(y1–

y12-1)+(y22-1–y22-2)++(yn2-(n-1)–yn2-n)]…=[x]补[(y1–y0)+(y2–y1)2-1++(yn–yn-1)2-(n-1)+(0

–yn)2-n)]…y1

2-1++…yn

2-n–[x]补=+[–x]补

2-1=20

–2-12-2=2-1

–2-22-12-2=[x]补[(y1–y0)+(y2–y1)2-1++(yn+1–yn)2-n]…附加位

yn+1④Booth算法递推公式[z0]补=0[z1]补=2-1{(yn+1–yn)[x]补+[z0]补}yn+1=0[zn]补=2-1{(y2–y1)[x]补+[zn-1]补}…[x

·

y]补=[zn]补+(y1–y0)[x]补最后一步不移位如何实现

yi+1–yi

?000110111+[x]补

1+[–x]补

11yi

yi+1操作yi+1–yi

01-10例6.23已知x=+0.0011y=–0.1011求[x·y]补解:00.000011.110111.110100.001111.110100.001111.11011.0101000.0001111.11011100.000111111.11011111[x]补

=0.0011[y]补

=1.0101[–x]补

=1.1101+[–x]补11.111011010

11+[x]补00.00001110101+[–x]补11.1110111101100.00001111101+[–x]补+[x]补∴

[x·y]补

=1.11011111

最后一步不移位例用补码一位乘法计算[X]补

[Y]补

X=-0.10111,Y=0.10101解:

[X]补=1.01001,

[-X]补=0.10111[Y]补=0.101010101010000000部分积R0乘数R1判断位YnYn+10101110101010010111101010100101110100111010001010101110100101110100011010101001000101001

[X]补=1.01001,

[-X]补=0.10111[Y]补=0.10101+[-X]补+[X]补+[-X]补+[X]补110001101010111010101110000101110011111110101000111101001+[-X]补+[X]补11000110101011100001110101部分积R0乘数R1判断位YnYn+1(2)Booth算法的硬件配置A、X、Q均n+2位移位和加受末两位乘数控制0An+1n+2位加法器控制门0Xn+10Qn

n+1移位和加控制逻辑计数器CGM00,110110右移乘法小结原码乘符号位单独处理补码乘符号位自然形成原码乘去掉符号位运算即为无符号数乘法不同的乘法运算需有不同的硬件支持整数乘法与小数乘法完全相同可用逗号

代替小数点课堂练习与思考:1.一位乘是指将乘法转化为“累加部分积与移位”循环,因此()

。A.在原码一位乘法中只有求和操作而无相减操作B.在补码一位乘法中只有求和操作而无相减操作C.在原码一位乘法中既有求和操作又有相减操作D.不管是原码一位乘或补码一位乘,都既有求和操作又有相减操作A2.在原码一位乘中,当乘数Yi为1时,()。

A.被乘数连同符号位与原部分积相加后,右移一位;B.被乘数绝对值与原部分积相加后,右移一位;

C.被乘数连同符号位右移一位后,再与原部分积相加;D.被乘数绝对值右移一位后,再与原部分积相加;

B课堂练习与思考:3.在补码Booth一位乘法中,如果判断位YnY(n+1)=10,则下一步(但不是最后一步)的操作是将部分积加上_____,再向___移一位。(设x为被乘数,y为乘数)右[-X]补6.3.4除法运算1.分析笔算除法x=–0.1011y=0.1101求x÷y0.10110.1101⌒0.011010.010010.0011010.0001010.000011010.00000111

1商符单独处理心算上商余数不动低位补“0”减右移一位的除数上商位置不固定x÷y=–0.1101余数–0.00000111商符心算求得00.101000

???

计算机计算需考虑的几点:

1、计算机中,小数点是固定的,不能简单地采用手算的办法。为便于机器操作,使“除数右移”和“右移上商”的操作统一起来。

2、机器的运算过程和人毕竟不同,人会眼看心算,一看就知道够不够减。但机器却不会心算,必须先作减法,若余数为正,才知道够减;若余数为负,才知道不够减。不够减时必须恢复原来的余数,以便再继续往下运算。这种方法称为恢复余数法。要恢复原来的余数,只要当前的余数加上除数即可。但由于要恢复余数,使除法进行过程的步数不固定,因此控制比较复杂。2.笔算除法和机器除法的比较笔算除法

机器除法商符单独处理心算上商符号位异或形成|x|–|y|>0上商1|x|–|y|<0上商0余数不动

低位补“0”减右移一位

的除数2倍字长加法器上商位置不固定余数左移一位

低位补“0”减

除数1倍字长加法器在寄存器最末位上商3.原码除法以小数为例[x0]原

=x0.x1x2

xn…[y0]原

=y0.y1y2

yn…式中

x*=0.x1x2

xn

为x

的绝对值

y*=0.y1y2

yn

为y

的绝对值……数值部分为绝对值相除x*y*被除数不等于

0除数不能为0小数定点除法

x*

<y*整数定点除法

x*

y*商的符号位单独处理

x0

y0[]原

=(x0

y0).xyx*y*约定⑴恢复余数除法如何判断是否够减原码运算判断借位利用补码作减法,判断余数符号即可余数为负数时,必须恢复余数即将余数加除数,恢复成原来的值。求下一位商,必须将余数左移一位,再与除数比较比较,上商(恢复),余数移位,再比较,

直到获得商所需要的位数为止。00.100101.001011.0101

被除数/余数

00.011100.111011.0101

00.001100.011011.0101

上商位

说明

减Y比较

左移一位减Y比较余数R0<0,商=0加Y恢复余数

余数R1>0,商上1

左移一位减Y比较

R2>0,商上1

左移一位减Y比较

R3<0,商上0

加Y恢复余数左移一位减Y比较

R4>0,商上1

11.111000.1011

00.0001

00.011000.110011.0101

11.101100.1011

0.110

0.1101

0.110

0.1

0

0

0.11

00.100111.0101

+[–Y]补

+[–Y]补

+[–Y]补

+[–Y]补

+[–Y]补

+

+

恢复余数除法问题需要进行恢复余数的操作恢复余数的操作次数不确定,故运算时间不固定,影响除法速度。实际应用通常采用不恢复余数除法。(2)不恢复余数法余数Ri>0上商“1”,2Ri

–y*余数Ri<0上商“0”,

Ri

+y*恢复余数2(Ri+y*)–y*=2Ri

+y*加减交替

恢复余数法运算规则

不恢复余数法运算规则上商“1”2Ri–y*

上商“0”2Ri+y*(加减交替法)x=–0.1011y=–0.1101求[]原xy解:例6.250.10111.00110.11011.00111.00110.11010.0000+[–y*]补01.1110余数为负,上商01.110001+[y*]补00.1001余数为正,上商1+[–y*]补1.0010011+[–y*]补+[y*]补0.101001111.1010011010.010101余数为正,上商10.01110110余数为正,上商11.1101011余数为负,上商0[x]原

=1.1011[y*]补

=0.1101[–y*]补

=1.0011[y]原

=1.11011101逻辑左移①x0

y0=1

1=0②x*y*=0.1101∴=0.1101[]原xy上商n+1次例6.25结果特点用移位的次数判断除法是否结束第一次上商判溢出移n

次,加n+1次(3)原码加减交替除法硬件配置A、X、Q均n

+1位用Qn

控制加减交替

0

A

nn+1位加法器控制门0

X

n0Q

n

计数器CGD加减移位和加控制逻辑SV左移[Ri]补=0.1000

[x]补

=1.1101

[y]补

=1.01014.补码除法(1)商值的确定x=0.1011y=0.0011

[x]补

=0.1011

[y]补

=0.0011[x]补

=0.1011[–y]补

=1.1101[Ri]补=0.1000x=–0.0011y=–0.1011[x]补

=1.1101[–y]补

=0.1011x*>y*[Ri]补与[y]补同号“够减”x*<y*[Ri]补与[y]补异号“不够减”++①比较被除数和除数绝对值的大小x

与y

同号[x]补和[y]补求

[Ri]补[Ri]补与[y]补同号异号[x]补–[y]补[x]补+[y]补同号,“够减”异号,“够减”小结x=0.1011y=–0.0011

[x]补

=0.1011

[y]补

=1.1101[x]补

=0.1011[y]补

=1.1101[Ri]补=0.1000x=–0.0011y=0.1011

[x]补

=1.1101

[y]补

=0.1011[x]补

=1.1101[y]补

=0.1011[Ri]补=0.1000x*>y*[Ri]补与[y]补异号“够减”x*<y*[Ri]补与[y]补同号“不够减”++x

与y

异号②商值的确定[x]补与[y]补同号正商按原码上商“够减”上“1”“不够减”上“0”[x]补与[y]补异号负商按反码上商“够减”上“0”“不够减”上“1”[Ri]补与[y]补商值同号异号100.原码1×.××××

11.反码1×.××××

1末位恒置“1”法[x]补与[y]补商[Ri]补与[y]补商值够减不够减够减不够减同号异号正负1001原码上商反码上商小结简化为(同号)(异号)(异号)(同号)(2)商符的形成除法过程中自然形成[x]补和[y]补同号[x]补–[y]补比较[Ri]补和[y]补同号(够)“1”异号(不够)“0”原码上商小数除法第一次“不够”上“0”正商[x]补和[y]补异号[x]补+[y]补比较[Ri]补和[y]补异号(够)“0”同号(不够)“1”反码上商小数除法第一次“不够”上“1”负商(3)新余数的形成[Ri]补和[y]补商新余数同号异号102[Ri]补+[–y]补2[Ri]补+[

y

]补加减交替例6.26设

x=–0.1011y=0.1101求

并还原成真值[]补xy解:[x]补

=1.0101[y]补

=0.1101[–y]补

=1.00111.01010.11011.00110.11010.11010.0000异号做加法10.0010同号上“1”1

.01111异号上“0”+[y]补1.101110异号上“0”+[y]补0.0011100同号上“1”0.0100110.11101011.01101001末位恒置“1”0.011010011[]补=1.0011xy∴0011+[–y]补xy=

–0.1101则逻辑左移

例6.27[X]补=1.0111,[Y]补=1.0011,则[-Y]补=0.1101。求[X/Y]补=?被除数(余数)商操作说明

11.0111+00.1101两数同号,+[-Y]补

00.01000余数与除数异号,商0

左移00.1000+11.0011+[Y]补

11.101101同号,商1

左移11.0110+00.1101+[-Y]补

00.0011010异号,商0

左移00.0110+11.0011+[Y]补

11.10010101同号,商1

左移11.0010+00.1101+[-Y]补

11.111101011同号,商1

注:1、商值为正,商不必末位加1。

2、余数与X同号,不必进行纠余

[X/Y]补=0.1011[余数]补=1.1111x2-4

(4)小结补码除法共上商n

+1次(末位恒置1)第一次为商符加n

次移n

次第一次商可判溢出精度误差最大为2-n课堂练习与思考:1.在定点数一位原码除法中,()。A.为了避免溢出,被除数的绝对值要小于除数的绝对值;

B.被除数的符号位和除数的符号位都要参加运算;

C.每次加减法操作后,部分余数右移一位;

D.符号位参加除法运算,并根据数值位的除法运算结果改变结果的符号位;2.原码加减交替除法,商符(),参加操作的数是()。A.原码B.绝对值得补码C.在形成商值得过程中自然形成D.由两个符号位异或形成;ABD6.4.1浮点加减法运算计算X+Y=?

求解:

如:Ex=EyS=2Ex

×(Mx+My)

如:Ex≠Ey?????假设:

6.4浮点四则运算xEMXx2=yEMYy2=对阶对阶(使得小数部分可以按位权值按位相加)大阶对小阶还是小阶对大阶???

210*(0.11000)+28*(0.00110)大阶对小阶

210*(0.11000)--

28*(11.000)

11.000+0.00110

?????????小阶对大阶

28*(0.00110)--

210*(0.00001)0.00001+0.11000=0.11001对阶过程应该是小阶对大阶

尾数右移尾数运算如:Ex=Ey

S=2Ex(Mx+My)尾数进

温馨提示

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

评论

0/150

提交评论