补码除法(加减交替法)规则说明
1. 商为正时,够减应商真值1,不够减时商真值0;
商为负时,够减应商真值 -1,不够减时商真值0;
[B]补[A]补2. 当
与同号时,商Q为正,Q的真值与补码形式一致;
当
[B]补与
[A]补异号时,商Q为负,Q的真值与补码的关系除最后一位(恒为1)外,其余
各位补码实际上是对应真值的反码。
3. 关于溢出,无论如何,第一为商只能是0。假定第一位商的真值为qn1,则余数
''R2B补qnA2B-q补1n1A补''qn,若1取1(或-1)时,余数仍为真余数,则溢出。也即:
当Q为正时,R=2
[B]补-1
[A]补=2
[B]补[A]补-与B同号溢出;
当Q为负时,R=2
[B]补-(-1)
[A]补=2
[B]补+
[A]补与B同号溢出
4. 当Q为正时:
* 若R与
[A]补同号,表明R是真余数,应商真值1,补码形式也是1;根据加减
[1A]补交替法,下一步为2R-[A]补→R,即2R[A]补R。
* 2R+
若R与异号,表明R是假余数,应商真值0,补码形式也是0;下一步为
[1A]补→R,即2R[A]补R。
5. 当Q为负时:
* 若R与
[A]补同号,表明R是假余数,应商真值-0,反码形式是1;根据加减
交替法,下一步为 2R[1A]补R,即2R[A]补R
[A]补* 若R与异号,表明R是真余数,应商真值-1,反码形式是0;下一步为
2R[1A]补R,即2R[A]补R
6. 关于最后一位恒置1:由算法可知,最后一次减尝试可能出现够减和不够减两种情况,
但不管够减和不够减,减操作已经完成,算法中并不管最后余数的恢复,所以,最后一位商的真值应为1(或-1),余数有可能是假余数。分两种情况:
* 若Q为正,最后一位为1,与恒置1同。
* 若Q为负,最后一位真值为-1,反码形式为0,最后应将Q变成补码,最后
一位也为1,与恒置1同。
商的修正及说明
1. 前提,最后一次余数为Rn1,在非恒置1前提下最后一位商为Q0
2. 若Rn1=0,Rn1为真余数,Q0置成1。
3. 若Rn10,
[A]补* 若Q为正,如果Q0=0,Rn1为假余数,恢复余数为Rn1+,商不必修正。
如果Q0=1,余数和商不必修正。
* 若Q为负,如果Q0=0(反码),Rn1为真余数,商变成补码,即Q0置成1。如
[A]补果Q0=1(反码),Rn1为假余数,恢复余数为Rn1-,商变成补码,即加1。