# 计算机中的除法运算

# 简述

计算的中的除法十分有趣。对于 6 与 4,我们可以很容易的判断出那个大,进而进行后续的除法运算,而计算机中却不是。比此更复杂的除法运算,又是怎么实现的呢?

# 方法一:恢复余数法

题目源自《计算机组成原理(第三版)》例 6.24

01.png

被除数(余数) 说明
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

符号位:

02.png

恢复余数法总结:首先第一步无条件加 - y*,然后看余数大于零还是小于 0,如果大于 0 无需恢复 上 1 左移,如果小于 0 需要恢复 上 0 左移,如此循环往复,直到用完所有的商位。

# 方法二:加减交替法

加减交替法可以说是恢复余数的改良方法,我们无需恢复 直接进行运算,详情见下题:

题目源自《计算机组成原理(第三版)》例 6.25

03.png

被除数(余数) 说明
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