就讲解除法的实现原理而言,恢复余数的除法方案更容易理解,并很容易由此推导出实现不恢复余数(即加减交替法)的除法算法。所以,我们将首先介绍恢复余数除法的实现方案。

  先看手工除法的计算过程:
  假定 X=0.1011, Y=0.1101


  手工计算二进制除法的规则,是判断被除数与除数绝对值的大小,若被除数小,则上商0,并把被除数的下一位移下来(若存在)或在余数最低位补0,再用余数和右移一位的除数比,若够除,则上商1,否则上商0。然后继续重复上述步骤,直到除尽(即余数为零)或已得到的商的位数满足要求为止。

  与实现乘法类似的是,在计算机中,也不能全盘照搬手工计算除法的具体办法。主要问题是,手工计算的办法需要加法器的位数为除数位数的两倍,实现起来不合理。但仔细分析一下,会发现右移除数,可以通过左移被除数(余数)的方案替代,左移出界的被除数(余数)的高位都是无用的零,对运算不会产生任何影响。另外一个问题是,手工计算除法时,上商0还是1是计算者用观察比较的办法确定的,而在计算机中,只能用做减法后再判断结果的符号为负还是为正来确定。对恢复余数除法来说,当减出的差为负时,上商为0,同时还应把除数再加到负差上去,恢复余数为原来的正值之后再将其左移一位。若减得的差为0或为正值时,就没有恢复余数的操作,上商为1,余数左移一位。第三个问题是上商,手工除法中,求商是从高位向低位逐位求,而在计算机内,把求得的每一位商直接写进寄存器的不同的位是不可取的。通常,上商是通过把求得的每一位商上到存放商值的寄存器的最低一位,并把已求得的部分商左移一位。这样,在除法开始时,商寄存器还可以存放双倍字长的被除数的低位部分的值,在实现部分余数左移时,将它的最高数值位移入部分余数的最低位。有了上述说明,就可以得到如图2.8所示的实现原码一位除法的逻辑电路框图。


图2.8 实现原码一位除法运算的逻辑线路框图