# 计算机中的除法运算
# 简述
计算的中的除法十分有趣。对于 6 与 4,我们可以很容易的判断出那个大,进而进行后续的除法运算,而计算机中却不是。比此更复杂的除法运算,又是怎么实现的呢?
# 方法一:恢复余数法
题目源自《计算机组成原理(第三版)》例 6.24
被除数(余数) | 商 | 说明 |
---|---|---|
0.1011+1.0011=1.1110 | 【0.0000】 | 第一步无条件 - y* |
1.1110+0.1101=0.1011 | 【0.0000】 | 1.1110 小于零 恢复余数 |
1.0110 | 【0.000】0 | 上 0 左移 (补位来自商) |
1.0110+1.0011=0.1001 | 【0.000】0 | 0.1001 大于 0 无需恢复 |
1.0010 | 【0.00】01 | 上 1 左移 (补位来自商) |
1.0010+1.0011=0.0101 | 【0.00】01 | 0.0101 大于 0 无需恢复 |
0.1010 | 【0.0】011 | 上 1 左移 (补位来自商) |
0.1010+1.0011=1.1101 | 【0.0】011 | 1.1101 小于 0 恢复余数 |
1.1101+0.1101=0.1010 | 【0.0】011 | |
1.0100 | 【0】.0110 | 上 0 左移(补位来自商) |
1.0100+1.0011=0.0111 | 【0】.0110 | 0.0111 大于零 无需恢复 |
0.0111 | 0.1101 | 上 1 |
值:0.1101
符号位:
恢复余数法总结:首先第一步无条件加 - y*,然后看余数大于零还是小于 0,如果大于 0 无需恢复 上 1 左移,如果小于 0 需要恢复 上 0 左移,如此循环往复,直到用完所有的商位。
# 方法二:加减交替法
加减交替法可以说是恢复余数的改良方法,我们无需恢复 直接进行运算,详情见下题:
题目源自《计算机组成原理(第三版)》例 6.25
被除数(余数) | 商 | 说明 |
---|---|---|
0.1011+1.0011=1.1110 | 【0.0000】 | 无条件加 - y* |
1.1100 | 【0.000】0 | 1.1110 小于 0 上 0 左移 |
1.1100+0.1101=0.1001 | ||
1.0010 | 【0.00】01 | 0.1001 大于 0 上 1 左移 |
1.0010+1.0011=0.0101 | ||
0.1010 | 【0.0】011 | 0.0101 大于 0 上 1 左移 |
0.1010+1.0011=1.1101 | ||
1.1010 | 【0】.0110 | 1.1101 小于 0 上 0 左移 |
1.1010+0.1101=0.0111 | ||
0.0111 | 0.1101 | 0.0111 大于 0 上 1 |
核心:上 0 加正,上 1 加负,此口诀为上一步上的 0 或 1 在下一步体现,如果上了 0 那么下一步就加正,如果上了 1 那么下一步就加负。那么我们怎么知道到底是上 0 还是 1 呢?这个主要看余数,如果它是正的就上 1,如果他是负的就上 0