运算方法和运算部件3-3,4_第1页
运算方法和运算部件3-3,4_第2页
运算方法和运算部件3-3,4_第3页
运算方法和运算部件3-3,4_第4页
运算方法和运算部件3-3,4_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

计算机学院《计算机组成与结构》——本科生课程教学运算方法和运算部件3-3,4,共57页,您现在浏览的是第1页!计算机组成与结构本课程主要讲授计算机系统的硬件和软件构成方法,包括硬件系统中运算器、控制器、存储器、输入设备和输出设备和总线系统的构成原理等;并与当代先进的计算机技术相结合。是计算机科学与技术本科专业核心课程。

本课程着重计算机系统组成与结构方面的教学和研究。计算机结构定义为系统程序员所能见到的计算机硬件特性;计算机组成是指计算机硬件的具体实现。运算方法和运算部件3-3,4,共57页,您现在浏览的是第2页!第三章运算方法和运算部件

数据的表示方法和转换带符号数的表示方法及加减运算二进制乘法运算二进制除法运算浮点数的运算方法运算部件数据校验码运算方法和运算部件3-3,4,共57页,您现在浏览的是第3页!3.3二进制乘法运算一、定点数一位乘法1、定点原码一位乘法用原码实现乘法运算十分方便,在定点运算中,完成两个原码表示得数相乘时,乘积得符号由两数得符号位按位相加(异或)得到,而乘积得数值部分则是两个数得绝对值之积。可以表示为:被乘数[X]原=Xs.X1X2……Xn乘数[Y]原=Ys.Y1Y2……Yn乘积[Z]原=(Xs⊕Ys).(0.X1X2….Xn)(0.Y1Y2….Yn)运算方法和运算部件3-3,4,共57页,您现在浏览的是第4页!3.3二进制乘法运算例,X=0.1101,Y=0.1011,求X*Y=?

手工方法机器方法0.1101(X)0.1101×0.1011(Y)×0.10111101……P10.000011011101……..P20.00011010000………P30.000000+1101………..P4+0.0110110001111……P0.10001111运算方法和运算部件3-3,4,共57页,您现在浏览的是第5页!3.3二进制乘法运算原码机器乘法规律:

当所乘得乘数为1时,则上次所得的部分积(最初为0)加被乘数右移一位,而得新的次一部分积;若所乘的乘数为0时,则上次所得的部分积加0右移一位后就是新的次一部分积。如此反复,直到乘数各位都乘完为止。运算方法和运算部件3-3,4,共57页,您现在浏览的是第6页!3.3二进制乘法运算一般而言,设被乘数X,乘数Y都是小于1的n位定点正数:

X=0.X1

X2……….XnY=0.Y1Y2……….Yn

其乘积为:X*Y=X(0.Y1Y2……Yn)=X(Y12-1+Y22-2+…….+Yn2-n)=2-1(Y1X+2-1(Y2X+2-1(……+2-1(Yn-1X+2-1(YnX+0))……)))运算方法和运算部件3-3,4,共57页,您现在浏览的是第7页!3.3二进制乘法运算上述乘法运算的递推算法可用流程图来表示:(P74图3.6)开始Pi=0,i=0Yn=1Pi+0Pi+XPi,Y右移一位,i=i+1i=n?结束YNNY运算方法和运算部件3-3,4,共57页,您现在浏览的是第8页!3.3二进制乘法运算2、定点补码一位乘法原码乘法的主要问题是符号位不能参加运算。补码乘法可以实现符号位直接参加运算。(1)补码与真值的转换关系设[X]补=X0.X1X2……..Xn当X>=0时,X0=0(符号位为0)尾数部分为真值X

运算方法和运算部件3-3,4,共57页,您现在浏览的是第9页!3.3二进制乘法运算(2)补码的右移正数右移一位,相当于乘1/2,负数用补码表示,右移一位也相当于乘1/2。因此在补码运算的机器中,一个数不论其正负,连同符号位向右移一位,符号位保持不变,就等于乘1/2。设[X]补=X0.X1X2…..Xn,因为所以运算方法和运算部件3-3,4,共57页,您现在浏览的是第10页!运算方法和运算部件3-3,4,共57页,您现在浏览的是第11页!BOOTH算法流程:开始时,部分积为0,即[P0]补=0,然后每一步都是在前次部分积的基础上由(Yi+1-Yi)(i=0,1,2…n)决定对[X]补的操作,再右移一位,得到新的部分积。如此重复n+1步,最后一步不移位,便得到[X]补*[Y]补。

画出流程图。

运算方法和运算部件3-3,4,共57页,您现在浏览的是第12页!3.3二进制乘法运算例,[X]补=1.0101,[Y]补=1.0011,求[X*Y]补=?解:[-X]补=0.1011,采用双符号位表示后,运算过程如下:部分积乘数操作00.00001.00110

Yn+1=0,YnYn+1=10;+00.1011加[-X]补00.101100.0101110011YnYn+1=11;+00.0000加000.010100.0010111001YnYn+1=01;+11.0101加[X]补11.011111.1011111100

YnYn+1=00;+00.0000加011.101111.1101111110

YnYn+1=10+00.1011加[-X]补00.10001111最后一步不移位运算方法和运算部件3-3,4,共57页,您现在浏览的是第13页!3.3二进制乘法运算补码一位乘法逻辑图与原码一位乘法逻辑图的差异:(1)被乘数、乘数的符号位X0,Y0都参加运算;(2)乘数寄存器有附加位Yn+1,其初始状态为0,并有右移功能;(3)被乘数寄存器的每一位用原码或反码的多路开关输入,多路开关由YnYn+1控制;(4)部分积寄存器具有移位功能,其符号位与加法器的符号位始终一致;(5)当计数器i=n+1时,封锁移位信号,保证最后一步不移位。运算方法和运算部件3-3,4,共57页,您现在浏览的是第14页!3.3二进制乘法运算例,X=0.100111,Y=0.100111,则:[-X]补=1.011001

部分积乘数欠位C

00.000000100111

0+[-X]补11.01100111.011001右移2位11.110110011001

1+2X01.00111001.000100右移2位00.010001000110

0

+2X01.00111001.011111右移2位00.0101111100010运算方法和运算部件3-3,4,共57页,您现在浏览的是第15页!3.3二进制乘法运算上式表明,产生部分积之后,可以加上乘数寄存器最低两位和附加位的组合值与的积,再右移2位,可得到三位组合值的关系参加p80表3.5运算方法和运算部件3-3,4,共57页,您现在浏览的是第16页!3.3二进制乘法运算

Yn-1YnYn+1

操作000部分积+0,右移两位001部分积+[X]补,右移两位010部分积+[X]补,右移两位011部分积+2[X]补,右移两位100部分积+2[-X]补,右移两位101部分积+[-X]补,右移两位110部分积+[-X]补,右移两位111部分积+0,右移两位运算方法和运算部件3-3,4,共57页,您现在浏览的是第17页!3.3二进制乘法运算部分积乘数附加位说明000000000011001110

0组合值为100,+2[-X]补1110011010111110011010110011

1右移2位,组合值为111111111100110101100

1右移2位,组合值为001,+[X]补00001100110000101100000000101100101011

0右移2位,组合值为110,+[-X]补11110011011111011000111111011000001010右移1位运算结果为:11111011000001010即为:-0.00100111110110运算方法和运算部件3-3,4,共57页,您现在浏览的是第18页!3.3二进制乘法运算运算方法和运算部件3-3,4,共57页,您现在浏览的是第19页!3.4二进制除法运算例,X=0.1001,Y=0.1011,求X/Y=?常规手工算法笔算算法过程01101011010.1011)0.100100.1011)0.10010X(r0)-1011-0.01011011100.001110-1011-0.001011001100.0000110-0000-0.0000000011000.00001100-1011-0.0000101100010.00000001运算方法和运算部件3-3,4,共57页,您现在浏览的是第20页!3.4二进制除法运算

X/YQ00.1001+[-y]补11.0101q0=011.1110r0<0+[y]补00.1011恢复余数00.100101.0010+[-y]补11.0101q1=100.0111r1>000.1110+[-y]补11.0101q2=100.0011r2>000.0110+[-y]补11.0101q3=011.1011r3<0+[y]补00.1011恢复余数00.0110r3’00.1100+[-y]补11.0101q4=100.0001r4>0运算方法和运算部件3-3,4,共57页,您现在浏览的是第21页!3.4二进制除法运算例,X=0.1001,Y=0.1011,用不恢复余数法求X/Y=?[X]原=[X]补=0.1001,[Y]原=[Y]补=0.1011,[-Y]补=1.0101

X/YQ00.1001+[-Y]补11.0101q0=011.1110r0<011.1100+[Y]补00.1011q1=100.0111r1>000.1110+[-Y]补11.0101q2=100.0011r2>000.0110+[-Y]补11.0101q3=011.1011r3<011.0110+[Y]补00.1011q4=100.0001r4>0

运算方法和运算部件3-3,4,共57页,您现在浏览的是第22页!3.4二进制除法运算商的校正:补码一位除法的算法是在商的末位“恒置1”的舍入条件下推导的,按照这种算法所得到的有限位商为负数时,是反码形式,而正确需要得到商是补码形式,两者之间相差末位的一个“1”,所以最后加校正量“1”。例,X=-0.1001,Y=+0.1101,求[X/Y]补=?解:[X]补=1.0111,[Y]补=0.1101,[-Y]补=1.0011运算方法和运算部件3-3,4,共57页,您现在浏览的是第23页!3.4二进制除法运算二、提高除法运算速度的方法跳0跳1除法根据余数前几位代码值再次求得几位同位1或0得商。规则:(1)余数R>=0,且R的高K个数位均为0,则本次直接得商1,后跟K-1个0,R左移K位后,减除数Y,得新得余数。(2)余数R<0,且R的高K个数位均为1,则本次直接得商0,后跟K-1个1,R左移K位后,加除数Y,得新得余数。(3)不满足(1)、(2)中条件时,按一位除法上商。参见P88例3.43。运算方法和运算部件3-3,4,共57页,您现在浏览的是第24页!3.5浮点数的运算方法一、浮点加法和减法设有两个浮点数x和y,它们分别为

x=2m·Mx

y=2n·My

其中m和n分别为数x和y的阶码,Mx和My为数x和y的尾数。运算方法和运算部件3-3,4,共57页,您现在浏览的是第25页!3.5浮点数的运算方法(3)结果规格化当运算结果的尾数部分不是11.0××…×或00.1××…×的形式时,则应进行规格化处理。当尾数符号位01或10需要右规。右规的方法是尾数连同符号位右移一位、和的阶码加1,右规处理后就可得到11.0××…×或00.1××…×的形式,即成为规格化的数.当运算结果的符号位和最高有效位为11.1或00.0时需要左规。左规的方法是尾数连同符号位一起左移一位、和的阶码减1,直到尾数部分出现11.0或00.1的形式为止。运算方法和运算部件3-3,4,共57页,您现在浏览的是第26页!3.5浮点数的运算方法例:

x=101.10010=23×0.10110010y=1100.1000=24×0.11001000x补=0011,0.1011001y补=0100,0.1100100(1)对阶[ΔE]=[m]

补-[n]

补=0011+1100=1111,其真值位-1,即:x的阶码比y的阶码小1,x的尾数应右移1位,阶码加1得:x补=0100,0.0101101(0舍1入)运算方法和运算部件3-3,4,共57页,您现在浏览的是第27页!3.5浮点数的运算方法(3)结果规格化

由于加运算结果的尾数为01.×……×的形式,所以应右规,尾数右移一位,阶码加1,所以结果为:[x+y]补=0101,0.1001001[0舍1入]

x+y=2101×[0.1001001]

由于减运算结果的尾数为11.1×……×的形式,所以应左规,尾数左移一位,阶码减1,所以结果为:[x-y]补=0011,1.0010010x-y=2011×[-0.1101110]运算方法和运算部件3-3,4,共57页,您现在浏览的是第28页!3.5浮点数的运算方法2.浮点乘法运算设x=2m·Mx,y=2n·My

则x·y=2m+n(Mx·My)其中,Mx、My分别为x和y的尾数。浮点乘法运算也可以分为3个步骤:(1)阶码相加(2)尾数相乘尾数相乘可按定点乘法运算的方法进行运算。(3)结果规格化运算方法和运算部件3-3,4,共57页,您现在浏览的是第29页!3.5浮点数的运算方法4.浮点数的底的问题浮点数的底一般为2,为了用相同位数的阶码表示更大范围的浮点数,在一些计算机中也有选用阶码的底为8或16的。此时浮点数N被表示成

N=8E×M或N=16E×M

当阶码以8为底时,只要尾数满足l/8≤M<1或-l≤M<-1/8就是规格化数。执行对阶和规格化操作时,每当阶码的值增或减1,尾数要相应右移或左移三位。当阶码以16为底时,只要尾数满足1/16≤M<1或-1≤M<-1/16就是规格化数。执行对阶和规格化操作时,阶码的值增或减1,尾数必须移四位。判别为规格化数或实现规格化操作,均应使数值的最高三位(以8为底)或四位(以16为底)中至少有一位与符号位不同。运算方法和运算部件3-3,4,共57页,您现在浏览的是第30页!3.3二进制乘法运算符号法则:同号相乘为正(0),异号相乘为负(1),(XsYs=00,01,10,11),所以积得符号可按“异或”运算得到。数值部分运算法则:与普通十进制小数乘法相似。运算方法和运算部件3-3,4,共57页,您现在浏览的是第31页!3.3二进制乘法运算机器运算与手工运算方法区别在于:(1)机器一次只能进行两个数相加,所以P1+P2+P3+P4必须分步进行:P1+P2;(P1+P2)+P3;[(P1+P2)+P3]+P4。(2)每做完一次加运算,把部分积右移一位(相当于把被加数右移,而不是左移),移出得数码不参加运算,故机器的位数可以固定。由此可以分析出机器乘法运算得基本规律。运算方法和运算部件3-3,4,共57页,您现在浏览的是第32页!3.3二进制乘法运算例,X=0.1101,Y=0.1011,求X*Y=?机器算法如下:0000初始化值

y=1+110111011101………..P1y=1+1101100111100111………P2

y=0+0000100111100111……..P3y=1+11011000111110001111……P4=P运算方法和运算部件3-3,4,共57页,您现在浏览的是第33页!3.3二进制乘法运算令Pi表示第i次的部分积,则上式可写成如下递推公式:

P0=0,P1=2-1(YnX+P0),P2=2-1(Yn-1X+P1),Pi=2-1(Yn-i+1X+Zi-1),Pn=X*Y=2-1(Y1X+Pn-1)

此处的P0,P1…Pn-1为部分积,Pn为最终的乘积P。运算方法和运算部件3-3,4,共57页,您现在浏览的是第34页!3.3二进制乘法运算实现原码一位乘法的逻辑电路图(P73图3.5)。运算方法和运算部件3-3,4,共57页,您现在浏览的是第35页!3.3二进制乘法运算当X<0时,X0=1(符号位为1)[X]补=1.X1X2…….Xn=2+X

所以真值X为:X=1.X1X2…..Xn-2=-1+0.X1X2……Xn

所以,

运算方法和运算部件3-3,4,共57页,您现在浏览的是第36页!3.3二进制乘法运算写成补码形式,得:所以,若要得,只要将[X]补连同符号位右移I位即可。(3)补码的乘法规则设被乘数为[X]补=X0.X1X2….Xn,乘数[Y]补=Y0.Y1Y2….Yn均为任意符号,则补码乘法算式:[XY]补=X补[0.Y1Y2……Yn]+[-X]补Y0证明参见(P75-76)。

运算方法和运算部件3-3,4,共57页,您现在浏览的是第37页!3.3二进制乘法运算(4)BOOTH算法根据相邻两位比较结果决定运算操作的方法称为“比较法”,是由BOOTH夫妇提出的,也称BOOTH算法。[XY]补=[X]补(0.Y1Y2……Yn)+[-X]补Y0

=[X]补(0.Y1Y2……Yn)-[X]补Y0

=[X]补(-Y0+2-1Y1+2-2Y2+……+2-nYn)

=[X]补[-Y0+(Y1-2-1Y1)+(2-1Y2-2-2Y2)+……+(2-(n-1)Yn-2-nYn)]

=[X]补[(Y1-Y0)+2-1(Y2-Y1)+2-2(Y3-Y2)+……+2-n(Yn+1-Yn)]运算方法和运算部件3-3,4,共57页,您现在浏览的是第38页!3.3二进制乘法运算(5)补码一位乘法的运算规则根据BOOTH算法流程图,可得到补码一位乘法的运算规则。运算规则:如果Yn=Yn+1,部分积[Pi]加0,再右移一位;如果YnYn+1=01,部分积加[x]补,再右移一位;如果YnYn+1=10,部分积加[-X]补,再右移一位。如此重复进行n+1步,最后一步不移位;包括一位符号位,所得乘积为2n+1位,其中n为尾数位数。运算方法和运算部件3-3,4,共57页,您现在浏览的是第39页!3.3二进制乘法运算(6)实现补码一位乘法的逻辑图运算方法和运算部件3-3,4,共57页,您现在浏览的是第40页!3.3二进制乘法运算二、定点数二位乘法1、原码两位乘两位乘数有四种可能组合及相应的操作:00-相当于0*X;部分积Pi+X,右移2位;01-相当于1*X;部分积Pi+X,右移2位;10-相当于2*X;部分积Pi+2X,右移2位;11-相当于3*X;部分积Pi+3X,右移2位。与一位乘法比较,多出了+2X和3X两种情况。把X左移一位即得2X;+3X可以用(4X-X)来实现。原码两位乘法规则(P79表3.4)运算方法和运算部件3-3,4,共57页,您现在浏览的是第41页!3.3二进制乘法运算2、补码两位乘根据BOOTH算法,将两步合并成一步,可以推导除编码两位乘法公式:上一步部分积:本步部分积:下一步部分积:运算方法和运算部件3-3,4,共57页,您现在浏览的是第42页!3.3二进制乘法运算根据BOOTH乘法推导出补码两位乘法规则如下:(1)参加运算的数用补码表示(2)符号位参加运算(3)乘数最低位后面增加一位附加位Yn+1,其初值为0(4)根据乘数的最低三位Yn-1YnYn+1的值决定每次应执行的操作(5)移位按补码右移规则进行。运算方法和运算部件3-3,4,共57页,您现在浏览的是第43页!3.3二进制乘法运算例,两位补码乘法,假设X=+0.0110011,Y=-0110010则:[X]补=00110011,[Y]补=11001110;[-X]补=11001101,2[X]补=01100110,2[-X]补=10011010;其两位补码乘法实现过程如下:运算方法和运算部件3-3,4,共57页,您现在浏览的是第44页!3.3二进制乘法运算三、阵列乘法器运算方法和运算部件3-3,4,共57页,您现在浏览的是第45页!3.4二进制除法运算一、定点除法运算

定点除法所占整个指令的执行频度很小,约0.2%,但它是不可少的。除法运算的方法很多,如原码除法、补码除法、跳0跳1法、迭代法等等。1、定点原码一位除法运算方法和运算部件3-3,4,共57页,您现在浏览的是第46页!3.4二进制除法运算恢复余数法(还原法)规则:每次余数ri(最初是被除数X不移位)左移一位减除数,得到新的余数ri+1,ri+1=2ri+[-y]补;如果ri+1>=0,表示够减,商上“1”;如果ri+1<0,表示不够减,商上“0”,还要加除数y,然后左移一位再作减除数y的运算。例,X=0.1001,Y=0.1011,用恢复余数法秋X/Y=?[X]原=[X]补=0.1001[Y]原=[Y]补=0.1011[-Y]补=1.0101采用双符号位,恢复余数法运算过程如下:运算方法和运算部件3-3,4,共57页,您现在浏览的是第47页!3.4二进制除法运算不恢复余数法(加减交替法)基本规则:当余数为正时,商上“1”,余数左移一位,减除数;当余数为负时,商上“0”,余数左移一位,加除数。恢复余数法与不恢复余数法的区别:当余数ri为正时:恢复余数法为,+ri*2-y,商为“1”不恢复余数法为,+ri*2-y,商为“1”当余数ri为负时:恢复余数法为,(-ri+y)*2-y=-2ri+y,商为“1”不恢复余数法为,-ri*2+y,商为“0”

运算方法和运算部件3-3,4,共57页,您现在浏览的是第48页!3.4二进制除法运算2、定点补码一位除法补码加减交替法法则:(1)被除数与除数同号,被除数减去除数;被除数与除数异号,被除数加上除数。(2)余数与除数同号,商为“1”,余数左移一位,下次减除数;余数与除数异号,商为“0”,余数左移一位,下次加除数。(3)重复步骤(2),包括符号位在内,共做n+1步。运算方法和运算部件3-3,4,共57页,您现在浏览的是第49页!3.4二进制除法运算X/YQ操作说明11.0111+[Y]补00.1101q0=0[X]补与[Y]补异号00.0100r1余数r1与除数同号00.1000左移,商1,减除数+[-Y]补11.0011q1=111.1011r2余数r2与除数异号11.0110左移,商0,加除数+[Y]补00.1101q2=000.0011r3余数r3与除数同号00.0110

温馨提示

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

评论

0/150

提交评论