定点运算——除法
分析笔算除法
将笔算除法转换成计算机除法
操作步骤
符号位
提出除数的符号位 和被除数的符号位,二者进行异或运算,得到最终结果
数值部分
取出除数和被除数的数值部分,求绝对值,然后用绝对值相除
约定
- 小数之间做除法,结果仍旧是小数,否则溢出;整数之间做除法,结果仍旧为整数,否则溢出
- 被除数,不为0,否则,直接输出零
- 除数不为零,否则报错
运算流程
下述为数值部分
4. 第一次相减,结果为负数,商的末位上0
5. 商逻辑左移一位,空出最低位,等待上商;余数恢复,逻辑左移一位,扩大两倍,再做差
6. 差值为正,商的原码末位上1
7. 将结果作为新的余数,逻辑左移;商逻辑左移,空出最低位,等待上商
8. 继续将余数与除数做差,结果为正,商的末位上1
9. 将新得到的差继续左移,作为新的余数。商的原码逻辑左移,空出末位,等待上商。
10. 结果为负数,商的末位上0
11. 差值逻辑左移,作为新的余数。商逻辑左移,空出末位,等待上商
- 结果为正数,商的末位上1,得到最终结果
列表
提炼修改——不恢复余数运算
将上述过程转为表达式
运算表格
基本过程不变,只不过转为了公式运算,再次具体的流程省去。虽然是转为了公式,但是第一步仍就要做差,确定第一次上商的数值,由此确定下一次的位数
总结
- 四位机器数,总共上了五次商,移了四次位。第一次上商是为了判定结果是否溢出,既是是否为大于一的数。
- 用移动的次数去判定出发是否结束
- 对于恢复余数法和加减交替法,实际上是一致,只不过对其进行了简单得变形,本质都是一样,判定余数和除数之间的关系,然后根据判定的情况,确定下一步上商的值。