原码、补码的除法运算

   日期:2020-06-03     浏览:230    评论:0    
核心提示:原码除法原码除法跟原码乘法一样,符号位是单独处理的。即商符由两数符号位进行异或运算求得,商值由两数绝对值相除(x*/y*)求得。恢复余数法:当余数为负时,需加上除数,将其恢复成原来的余数。1.符号位单独按两数符号异或求得;参与运算的是绝对值的补码2.判溢出, 要求|被除数| < |除数| (对小数而言)(如果是整数,则要求|被除数| > |除数| );3.被除数减去除数;4.若所得.余数为正,相应位上商为1,余数左移一位,减去[y]补;若余数为负,相应位上商

原码除法

原码除法跟原码乘法一样,符号位是单独处理的。

即商符由两数符号位进行异或运算求得,商值由两数绝对值相除(x*/y*)求得

恢复余数法:当余数为负时,需加上除数,将其恢复成原来的余数。

  • 1.符号位单独按两数符号异或求得;
    参与运算的是绝对值的补码

  • 2.判溢出, 要求|被除数| < |除数| (对小数而言)
    (如果是整数,则要求|被除数| > |除数| );

  • 3.被除数减去除数;

  • 4.若所得.余数为正,相应位上商为1,余数左移一位,减去[y]补;
    余数为负,相应位上商为0,余数加上除数(恢复余数),再左移一位,加上[-y]补;

  • 5.重复第4步,直到求得所要求的商为止(移n次)

  • 6.若最后一步余数为负,则需要恢复余数

总结:从以上步骤可以看出,具有n位尾数的合法除法,需要逻辑移位n位,上商n+1次。

例:已知x=-0.10110,y=0.111111,试用原码恢复余数法计算[x/y]原?
解:n=5,移5位,上商6次。-y*=-0.11111,因此[-y*]=11.00001。

除数与被除数一正一负,所以商为负数。
[x/y]原=-0.10110
余数在计算过程中被左移了5次:0.10110*2^(-5)=0.0000010110。

原码不恢复余数法:不需要恢复余数,将恢复余数的那个步骤定量地表达出来。

恢复余数的步骤:

余数>0 恢复余数法是将余数左移一位,减去除数 R’=2R-y*
余数<0 先恢复余数,再左移一位,再减去除数 R’=2R+y*

乘以2相当于左移1位
除以2相当于右移1位

例:已知x=-0.10110,y=0.11111,试用原码不恢复余数法计算[x/y]原?
解:-y*=-0.11111,因此[-y*]=11.00001。


除数与被除数一正一负,所以商为负数。
[x/y]原=-0.10110

补码不恢复余数法(加减交替法)

对于小数补码运算,商等于"-1"是被允许的。
算法规则:

  1. 符号位参加运算,除数与被除数均用双符号补码表示、
  2. 被除数与除数同号,被除数减去除数,被除数与除数异号,被除数加上除数。
  3. 余数与除数同号,商上1,余数左移一位减去除数; 余数与除数异号,商上0,余数左移一位加上除数。(注意:余数左移加上或减去除数后就得到了新余数。)
  4. 采用校正法包括符号在内,重复n+1次3.
[R]补与[y]补 新余数[Ri+1]补
同号 1 [Ri+1]补=2[Ri]补+[-y]补
异号 0 [Ri+1]补=2[Ri]补-[y]补
注意,使用此运算规则,需要修正商符,末位恒置1,加上1+ 2 -n


可见,假商=0.001,需要加上1+2-n,由于这里n=4,所以商=0.001+1.0001=1.0011
[x/y]补=1.0011
余数左移了4次,最后余数需要乘以2-4
补码的右移是补符号位,这里的余数是负数,右移时需要补1,即真正的余数为1.11111110

总结:可见,n位小数补码除法共上商n+1次(恒置“1”也算上商一次),且共移位n次。

《计算机组成原理》唐朔飞
《天勤计组高分笔记》

此次分享就到这里,欢迎大家指导指正~ 我是爱吃肉的小白yyyloki,如果你觉得不错的话点个赞吧!或者你可以关注,持续更新计组。我们下次见~886

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服