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

…衆ロ難τιáo~ 提交于 2019-12-23 00:40:38

前言

加减交替法处理思想是先减后判,如果减余数后发现不够减,则下一步中改为加除数操作。

运算一步加减完成时,遵循的规则

  • 当余数为正时,表示够减,即商上1,在进行下一次商时,将余数(此时为正)左移一位,减去除数。
  • 当余数为负时,表示不够减,即商上0,在进行下一次商时,将余数(此时为正)左移一位,加上除数。
  • 运算时需要双符号补码,所以应先把给定的定点数转换为补码形式,需要注意的是,除数的负数也要转换为双符号补码,方便后面作减法。因为在计算机中减一个数等于加这个数的负数。而补码正是用来做加减法的。
  • 操作的步数n 是由要求的n位商决定的,如果第n步 余数为负,则需增加一步恢复余数,即 +Y ,增加的这一步不移位。

实例练习

题目:

X=0.1011
Y=0.1101
用加减交替法求X/Y

解:
[X]补 =0.1011 对应的双符号位补码为 00 1011
[Y]补 =0.1101 对应的双符号位补码为 00 1101
[-Y]补 =1.0011 对应的双符号位补码为 11 0011

开始计算,X先减一下Y,即X+[-Y] 我们用双符号补码来做
在这里插入图片描述
根据规则,结果若是负数,代表不够减,下一步应该+Y,则商上0,并且在进行下一步之前让余数左移一位。即余数11 1110变为 11 1100

开始下一步
在这里插入图片描述
根据规则,结果若是正数,代表够减,下一步应该-Y,(-Y 就是加上-Y) 则商上1,并且在进行下一步之前让余数左移一位。即余数00 1001 变为 01 0010

开始下一步
在这里插入图片描述
根据规则,结果若是正数,代表够减,下一步应该-Y,(-Y 就是加上-Y) 则商上1,并且在进行下一步之前让余数左移一位。即余数00 0101 变为00 1010

开始下一步
在这里插入图片描述

11代表双符号位的负数,根据规则,结果若是负数,代表不够减,下一步应该+Y,则商上0,并且在进行下一步之前让余数左移一位。即余数11 1101变为 11 1010

开始下一步

在这里插入图片描述
00代表双符号位的正数,根据规则,结果若是正数,代表够减,则商上1

这时候商了五次,到了X和Y的位数

最终商总共上了01101 所以最终结果的数值位为1101 符号位为相除两数符号的异或值,在这里都是0和0 即最终异或值应该为0

另外还应该加上余数00 0111(上图最后双符号位形式) 即0.0111 (正常形式)

最后结果为0.1101 + 0.0111 × 2-4

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!