前言
加减交替法处理思想是先减后判,如果减余数后发现不够减,则下一步中改为加除数操作。
运算一步加减完成时,遵循的规则
- 当余数为正时,表示够减,即商上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
来源:CSDN
作者:阳光大男孩!!!
链接:https://blog.csdn.net/weixin_43889841/article/details/103653662