原码一位除法
恢复余数法
算前检查
- 除数不为 $0$
- 定点小数除法 $0<\left|被除数\right|\leq \left|除数\right|$
- 浮点运算若不满足此项,被除数
>>1并阶码+1,再计算
- 浮点运算若不满足此项,被除数
- 定点整数除法 $被除数>除数$
正式运算
- 余数
-=除数 - 恢复余数
- 若 1. 结果 $>0$,商 $1$,继续
- 若 1. 结果 $<0$,商 $0$,余数
+=除数 (恢复余数)
- 余数
<<=$1$,模拟竖式运算 n位定点小数除法总共移位n次结束- 商直接为原码,符号根据异或单独计算
加减交替法
把 恢复余数法 的判断恢复余数操作改为:
- 若余数 $>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]_{补}$ | |