定点除法

原码一位除法

分为 恢复余数法加减交替法

恢复余数法

算前检查

  • 除数不为 $0$
  • 定点小数除法 $0<\left|被除数\right|\leq \left|除数\right|$
    • 浮点运算若不满足此项,被除数 >>1 并阶码 +1,再计算
  • 定点整数除法 $被除数>除数$

正式运算

  1. 余数 -= 除数
  2. 恢复余数
    • 若 1. 结果 $>0$,商 $1$,继续
    • 若 1. 结果 $<0$,商 $0$,余数 += 除数 (恢复余数)
  3. 余数 <<= $1$,模拟竖式运算
  4. n 位定点小数除法总共移位 n 次结束
  5. 商直接为原码,符号根据异或单独计算

加减交替法

恢复余数法 的判断恢复余数操作改为:

  • 若余数 $>0$,则余数 $R=(R«1)+[-y]_{补}$
  • 若余数 $<0$,则余数 $R=(R«1)+[y]_{补}$

首次判断不移位,

  • 若余数 $>0$,则余数 $R=R+[-y]_{补}$
  • 若余数 $<0$,则余数 $R=R+[y]_{补}$

n 次移位 末位恒置 1 商直接为原码,符号根据异或单独计算

补码一位除法

余数 $[R_{i}]{补}$ 与 $[y]{补}$ 新余数 $[R_{i+1}]_{补}$ 备注
同号 1 $[R_{i+1}]{补}=2[R{i}]{补}+[-y]{补}$ 够减
异号 0 $[R_{i+1}]{补}=2[R{i}]{补}+[y]{补}$ 不够减
例子

let $x$ = 0.1011,$y$ = -0.1101 解:

  • $[x]_{补}$ = 0.1011
  • $[y]_{补}$ = 1.0011
  • $[-y]_{补}$ = 0.1101
余数 $R$ 操作 商 $Res$
0.1011 与 $[y]_{补}$ 异号,第一次不用移位
+ 1.0011 $+[y]_{补}$
1.1110 同号,商 $1$ 1
1.1100 移位
+ 0.1101 $+[-y]_{补}$