定点数加减法.ppt_第1页
定点数加减法.ppt_第2页
定点数加减法.ppt_第3页
定点数加减法.ppt_第4页
定点数加减法.ppt_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、3.2.2 定点数运算方法,数值运算的核心是指加、减、乘、除四则算术。由于计算机中的数有定点和浮点两种表示形式,因此相应有定点数的运算和浮点数的运算。,1定点加减运算,(1)原码加减运算,例如,加法指令指示做(+A)+(-B),由于一个操作数为负,实际操作是做减法(+A)-(+B),结果符号与绝对值大的符号相同。同理,在减法指令中指示做(+A)-(-B),实际操作是做加法(+A)+(+B),结果与被减数符号相同。,在用原码进行加减运算时,计算机实际操作是加还是减 取决于指令中的操作码和两个操作数的符号;运算结果的符号判断也较复杂。因此这种方法很少使用。,(2)补码加减运算, 补码加法运算,X

2、+Y =X +Y , 补码减法运算,XY =X +(-Y ) =X +-Y ,1. 补码加法运算,公式:x+y补=x补+y补 以模为2定义的补码为例,分四种情况证明该式的正确性(纯小数), 设x0, y0, 则x+y0 由补码定义,x补=x, y补=y, 所以x补+y补=x+y=x+y补 x0, y0, 则(x+y)0 由补码定义,x补=2+x, y补=2+y x补+y补=2+x+2+y=2+(2+x+y), 由于x+y为负数,其绝对值又小于1,所以(2+x+y)就一定是小于2大于1的数,上式等号右边的2必然丢掉,又由于x+y 0,所以 x补+y补=(2+x+y)=2+(x+y)= x+y补,

3、 x0, y0 情况与类似。,2. 补码的减法运算,公式xy补=x+(y)补=x补+y补 只要证明 y补= y补,上式即得证。证明如下:,由于 x+y补= x补+y补 ,可得 y补= x+y补x补, 又 xy补= x+(y)补= x补+y补,同理可得 y补= x y补x补 得 y补+ y补= xy补x补+x+y补x补=xy补+x+y补x补x补 = xy+x+y补x补x补 =2x补2x补=0 从而有 y补= y补 mod 2 只要求得y补,就可以变减法为加法,已知y补, 求y补的法则是: 对y补各位(包括符号位)取反,然后在末位加上1,就可以得到y补。, 补码运算规则 根据以上讨论,可将补码加减

4、规则归纳如下: 参加运算的操作数用补码表示。 符号位参加运算。 若指令操作码为加,则两数直接相加;若操作码为减,则将减数连同 符号位一起变反加1后再与被减数相加。 运算结果用补码表示。,【例3-3】 X = 00110110,Y =11001101,求X+Y ,X-Y 。,(3)溢出判别,在什么情况下可能产生溢出?,例:设定点整数字长8位,补码表示(最高位为符号位),表示范围为-128127,运算结果超出此范围就发生溢出。,正溢,负溢, 采用一个符号位判断,溢出= S +A B, 采用最高有效位的进位判断,溢出= C +C =C C, 采用变形补码判断(双符号位),用S 、Sn分别表示结果最高

5、符号位和第2符号位,溢出=S S,两正数相加结果为负或两负数相加结果为正,则溢出,符号位产生的进位与最高有效位产生的进位情况不同,则溢出,01:结果正溢 10:结果负溢,3定点数乘除运算,(1)无符号整数一位乘法,计算机中的乘法运算采用的方法是:将n位乘转换为n次“累加与移位”,即每一步只求一位乘数所对应的新部分积,并与原部分积作一次累加,然后右移一位。,右图是无符号整数一位乘的算法流程图。图中使用了3个寄存器A、B和C。 B用来存放被乘数; C存放乘数; A初值为0,然后存放部分积,最后存放乘积高位。 由于乘数每乘一位该位代码就不再使用,因此用A和C寄存器联合右移以存放逐次增加的部分积,并且

6、使每次操作依据的乘数位始终在C的最低位。乘法完成时,A与C存放的是最后乘积,其中C的内容是乘积的低位部分。,实现无符号整数一位乘法的硬件原理框图如下图所示。,图中,用进位触发器Ca保存每次累加暂时产生的进位,它的初值为0。在被乘数送入B、乘数送入C,A和Ca被置0后,控制逻辑控制乘法进入第1个节拍,这时由乘数位C0产生“加B/不加”(不加相当于加0)信号,用以控制被乘数B是否与上次部分积相加产生本次部分积,然后Ca、A、C一起右移一位。重复n个节拍的操作后所得到的乘积存放在A和C中。,【例3-10】 1101*1011的运算过程如图所示。,例2.13设x= 0.1101, y= 0.1011,

7、 求xy原= ?,上一例在演算时也可以先计算两小数的小数部分,算完小数部分积后再考虑积的的小数部分位数,添上小数点。,定点除法运算,遇到的问题,(2)无符号整数一位除法,在计算机中实现除法运算,着重要解决如何判断够减与否的问题,可以用以下两种办法: 用逻辑线路进行比较判别,又叫做比较法。将被除数或余数减去除数,如果够减就执行一次减法并商1,然后余数左移一位;如果不够减就商0,同时余数左移一位。这种方法的缺点是增加硬件代价。, 直接做减法试探,不论是否够减,都将被除数或余数减去除数。若所得余数符号位为0(即正)表明够减,上商1;若余数符号位为1(即负)表明不够减,由于已做了减法,因此上商0并加上

8、除数(即恢复余数);然后余数左移一位再做下一步。这就是恢复余数法。,通过分析恢复余数法可以发现: 当余数A为正时,上商1,下一步A左移一位再减除数B,相当于执行2A-B的运算; 若余数A为负,上商0,并加除数以恢复余数即A+B,下一步左移一位减去除数B,这实际相当于执行 2(A+B)- B = 2A+B 故在出现不够减时,并不需要恢复余数,只是下一步要进行2A+B的操作,因此称为不恢复余数法或加减交替法。其算法流程如右图所示。 图中使用3个寄存器A、B和C。运算开始时,n位除数存放在B中,2n位被除数存放在A和C寄存器中。除法完成后商放在C寄存器中,余数放在A寄存器中。 从图中可以看出,在重复

9、n-1次操作后,如果A中的余数为负,需要恢复余数做A+B。这一步是必需的,因为最后的寄存器A中应获得正确的正余数。,【例3-11】 用不恢复余数法计算000010000011。,解:A、C:00001000; B:0011; -B补:1101。 其运算过程如右图。,例 x =+0.1001 y = -0.1011 求x/y原,3.2.3 浮点数运算方法,1浮点数加减运算,设有两个浮点数:X=Mx ,Y=My 。要实现X +Y的运算,需要以下4个步骤才能完成。, 对阶操作 对阶的规则是:阶码小的数向阶码大的数对齐, 实现尾数的加(减)运算, 结果规格化和溢出判断,a左规,b右规,若运算结果是非规

10、格化的数,例如尾数是11.1xx或00.0 xx形式,就需要将尾数左移,每左移一位,阶码减1,直至满足规格化条件为止(即尾数最高有效位的真值为1,或尾数符与最高有效位不等),这个过程称为左规。在左规的同时应判断结果是否会下溢,即阶码小于所能表示的最小负数。,若运算结果尾数发生溢出,例如尾数为10.xxx或01.xxx形式,这并不表明浮点结果会溢出,此时需调整阶码,将尾数右移一位,阶码加1,称为右规。右规时,应判断结果是否会上溢,即阶码大于所能表示的最大正数。, 舍入操作,恒舍法,恒进法,0舍1进法,为什么不是阶码大的数向阶码小的数对齐?,下面举一个浮点加的实例。 【例3-12】 设有两个浮点数X=2 0.1101012,Y=2 (-0.101011)2。,阶码 尾数 X浮=11,10; 00.110101 Y浮=11,11; 11.010101, 对阶,E =EX +-EY =1110+0001=1111,即E =-

温馨提示

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

评论

0/150

提交评论