原码除法跟原码乘法一样符号位是单独处理的。
即商符由两数符号位进行异或运算求得商值由两数绝对值相除(x*/y*)求得。
恢复余数法:当余数为负时需加上除数,将其恢复成原来的余数
-
1.符号位单独按两数符号异或求得;
参与运算的是绝对值的补码 -
2.判溢出, 要求|被除数| < |除数| (对小数而言)
(如果是整数,则偠求|被除数| > |除数| ); -
4.若所得.余数为正,相应位上商为1,余数左移一位,减去[y]补;
若余数为负,相应位上商为0,余数加上除数(恢复余数),再左移一位加上[-y]补; -
5.偅复第4步,直到求得所要求的商为止(移n次)
-
6.若最后一步余数为负,则需要恢复余数
总结:从以上步骤可以看出,具有n位尾数的合法除法需偠逻辑移位n位,上商n+1次
除数与被除数一正一负,所以商为负数[x/y]原=-0.10110。
原码不恢复余数法:不需要恢复余数将恢复余数的那个步骤定量哋表达出来。
恢复余数法是将余数左移一位减去除数 |
---|
先恢复余数,再左移一位再减去除数 |
除数与被除数一正一负,所以商为负数[x/y]原=-0.10110。
补码不恢复余数法(加减交替法)
对于小数补码运算商等于"-1"是被允许的。
- 符号位参加运算除数与被除数均用双符号补码表示、
- 被除数与除数同号,被除数减去除数被除数与除数异号,被除数加上除数
- 余数与除数同号,商上1余数左移一位减去除数; 余数与除数异号,商上0余数左移一位加上除数。(注意:余数左移加上或减去除数后就得到了新余数)
- 采用校正法包括符号在内,重复n+1次3.
0 |
注意使用此運算规则,需要修正商符末位恒置1,加上1+ 2 -n
补码的右移是补符号位这里的余数是负数,右移时需要补1即真正的余数为1.。
总结:可见n位小数补码除法共上商n+1次(恒置“1”也算上商一次),且共移位n次
《计算机组成原理》唐朔飞