2.4 二进制除法运算(原码一位除恢复余数法)

2.4.1 恢复余数法

        两个原码数X和Y相除,其商Q的符号为相除两数符号的异或值,余数R与被除数同符号

基本原理

        参与运算的两数通过“异或”原则确定商的符号,再利用其绝对值相除获取商和余数。

详细步骤:对给定两数X与Y,求X/Y

①初始化时,置R=X*,Q=0;

②执行R-Y,若结果大于0,在Q最低位上商1,转④;

③在Q最低位上商0,执行R+Y,恢复余数;

④判断计数器是否为0,若不为0,R与Q同时左移,转② ;

⑤通过X0 ⊕ Y0确定商的符号,判断余数符号位,若为负,执行R+Y,恢复余数;

⑥返回结果。

        这里描述得看起来有点抽象,我给转成流程图了,按照这个一步步来即可。

结合例题:

 

【例】用原码一位除恢复余数法计算X/Y 。X=0.1011,Y=0.1101
————————————————————————————————————————————————————————————————————————————————
y* = 0.1101    [-y*]补 = 1.0011 (代替-y)
 
被除数(R)    商(Q)    说明
--------------------------------------------------------------------------------
    0.1011    0.0000    初始状态    +[-y*]补
   +1.0011
  ——————————
    1.1110       0     余数为负数,上商0;+y*,恢复余数
   +0.1101
  ——————————
    0.1011            
--------------------------------------------------------------------------------
    1.0110       0_    商与余数左移一位; +[-y*]补  
   +1.0011
  ——————————
    0.1001       01    此时余数为正数,上商1;
--------------------------------------------------------------------------------
    1.0010      01_    商与余数左移一位; +[-y*]补
   +1.0011
  ——————————
    0.0101      011    此时余数为正数,上商1;
--------------------------------------------------------------------------------
    0.1010      011_   商与余数左移一位; +[-y*]补
   +1.0011               
  ——————————
    1.1101      0110   余数为负数,上商0;+y*,恢复余数
   +0.1101
  ——————————
    0.1010
--------------------------------------------------------------------------------
    1.0100     0110_   商与余数左移一位; +[-y*]补
   +1.0011
  ——————————
    0.0111     01101   此时余数为正数,上商1;
--------------------------------------------------------------------------------

    此时的商的位数与之前给出的商(00000)位数相同,则停止运算。
    商的值为0.1101
    商的符号位为 0⊕0=0,故X/Y=0.1101,余数为0.0111*2^-4

  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值