原码、补码的除法运算

原码除法

原码除法跟原码乘法一样,符号位是单独处理的。
在这里插入图片描述
即商符由两数符号位进行异或运算求得,商值由两数绝对值相除(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

  • 29
    点赞
  • 110
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值