什么是二进制除法计算器?
这款工具可以把一个二进制(即基数为 2 的数)除以另一个二进制数,并同时给出二进制和十进制形式的商与余数。由于手工进行二进制长除法很容易出错,本计算器会先把你输入的数转换为十进制,执行整数除法,再把结果换算回二进制,省去繁琐的笔算过程。
使用方法
在第一个输入框中填写被除数(被分割的那个数),在第二个输入框中填写除数,只能使用数字 0 和 1。点击“计算”即可看到商和余数。注意:除数不能为 0,因为除以零在数学上没有意义。
计算公式说明
设 \(A\) 和 \(B\) 为输入的两个二进制数,计算器会先求出 \(A_{10} = \text{parseBinary}(A)\)、\(B_{10} = \text{parseBinary}(B)\)。整数商为 \(Q = \left\lfloor A_{10} / B_{10} \right\rfloor\),余数为 \(R = A_{10} \bmod B_{10}\),随后再把 \(Q\) 和 \(R\) 转换回二进制。这与计算机执行无符号整数除法的原理完全一致。
$$\left(\text{Dividend}_2\right) \div \left(\text{Divisor}_2\right) = Q \;\text{R}\; R$$
$$\begin{gathered} \text{Dividend}_2 \div \text{Divisor}_2 = Q \;\text{remainder}\; R \\[1.5em] \text{where}\quad \left\{ \begin{aligned} Q &= \left\lfloor \frac{A}{B} \right\rfloor \\ R &= A \bmod B \\ A &= (\text{Dividend}_2)_{10} \\ B &= (\text{Divisor}_2)_{10} \end{aligned} \right. \end{gathered}$$
计算示例
用 \(1100_2\) 除以 \(10_2\)。换算成十进制:\(1100_2 = 12\),\(10_2 = 2\)。于是 \(12 \div 2 = 6\),余数为 \(0\)。再换算回二进制:\(6 = 110_2\),\(0 = 0_2\)。因此 \(1100 \div 10 = \textbf{110 余 0}\)。
如何手工进行二进制数除法
二进制长除法与十进制长除法的工作原理完全相同,但实际上更简单:在每一步中,除数要么能整除当前的二进位(写上1),要么不能(写上0)。没有乘法表需要记忆——你只需将除数乘以0或1。
计算 \(\text{被除数}_2 \div \text{除数}_2 = Q \;\text{余}\; R\) 的通用步骤为:
- 从最高有效位对齐。从被除数的最左边一位开始作为当前工作值。
- 比较当前工作值与除数。如果工作值大于或等于除数,则除数"能整除"。
- 写商的一位。如果能整除则在上方写1,否则写0。
- 做减法。如果你写的是1,从工作值中减去除数;差值成为新的工作值。如果你写的是0,工作值不变。
- 将被除数的下一位取下来并附加到工作值上。
- 重复第2步到第5步,直到被除数的每一位都被取下来。
- 读出结果。上方收集的这些位组成商 \(Q\);剩余的工作值是余数 \(R\)。
计算示例:\(1011_2 \div 10_2\)(即十进制的11 ÷ 2)。
- 取下第一位:工作值 =
1。\(1 \ge 10\)?不是 → 商的一位0。 - 取下下一位:工作值 =
10。\(10 \ge 10\)?是的 → 商的一位1,做减法:\(10 - 10 = 0\)。 - 取下下一位:工作值 =
01=1。\(1 \ge 10\)?不是 → 商的一位0。 - 取下最后一位:工作值 =
11。\(11 \ge 10\)?是的 → 商的一位1,做减法:\(11 - 10 = 1\)。 - 没有剩余的位。商 =
0101= 101,余数 =1。
用十进制验证:\(11 \div 2 = 5\) 余 \(1\),且 \(101_2 = 5\),\(1_2 = 1\)。✓
更多二进制除法示例
每个示例都显示二进制长除法及其十进制验证,其关系始终为 \(\text{被除数} = \text{除数}\times Q + R\)。
示例1——非零余数:\(1011_2 \div 10_2\)
- 十进制等值:\(1011_2 = 11\),\(10_2 = 2\)。
- 长除法得商位
101,剩余位1。 - 结果:\(1011_2 \div 10_2 = 101_2 \;\text{余}\; 1_2\) → 十进制为 \(11 \div 2 = 5\;\text{余}\;1\)。
- 验证:\(2 \times 5 + 1 = 11\)。✓
示例2——除数大于被除数:\(100_2 \div 1000_2\)
- 十进制等值:\(100_2 = 4\),\(1000_2 = 8\)。
- 因为除数(8)大于被除数(4),所以永远不能整除,因此每一个商位都是0。
- 结果:\(100_2 \div 1000_2 = 0 \;\text{余}\; 100_2\) → 十进制为 \(4 \div 8 = 0\;\text{余}\;4\)。
- 验证:\(8 \times 0 + 4 = 4\)。✓ 当被除数小于除数时,商总是0,余数就是被除数本身。
示例3——完全整除并交叉验证:\(11110_2 \div 110_2\)
- 十进制等值:\(11110_2 = 30\),\(110_2 = 6\)。
- 依次取下各位,直到达到
110→ 能整除一次;继续取下各位,每次能整除时都做一次减法 \(110\)。 - 结果:\(11110_2 \div 110_2 = 101_2 \;\text{余}\; 0\) → 十进制为 \(30 \div 6 = 5\;\text{余}\;0\)。
- 验证商:\(101_2 = 5\),检验 \(6 \times 5 + 0 = 30\)。✓ 因为余数为0,这个除法是精确的。
你可以用二进制转十进制转换器确认任何这些转换,并通过将商和除数相乘来验证最终检验。
二进制除法中的关键术语
- 被除数
- 被除的数——除法括号下方写的值。在 \(1011_2 \div 10_2\) 中,被除数是 \(1011_2\)。
- 除数
- 你要除以的数。在 \(1011_2 \div 10_2\) 中,除数是 \(10_2\)。除数不能为零。
- 商
- 除法的整数结果——除数能被整除进被除数的次数。写在括号上方,每步一位。
- 余数
- 移除最大整数商后剩下的量:\(R = \text{被除数} - \text{除数}\times Q\)。它总是小于除数。
- 二进制(二进制制)
- 一种只使用数字0和1的数字系统,其中每个位置值是2的幂(\(1, 2, 4, 8, \dots\))而不是10的幂。
- 位
- 单个二进制数字(0或1)——"binary digit"的缩写。
- 最低有效位 / 最高有效位
- 最低有效位是最右边的位(1位);最高有效位是最左边的位(最高位值)。二进制长除法从最高有效位向最低有效位处理位。
- 整数除法 / 向下取整除法
- 只保留商的整数部分并舍弃任何小数部分的除法——这正是二进制长除法及其余数所产生的。
- 模运算
-
仅返回除法的余数的运算(通常写作
mod或%)。对于 \(1011_2 \div 10_2\),模运算的结果是 \(1_2\)。
常见问题
可以对带小数的二进制数做除法吗? 不行。本计算器只处理无符号整数二进制数,结果为整数商加余数。
如果除数比被除数还大怎么办? 此时商为 0,余数等于被除数。例如 \(10 \div 100\) 的结果是商为 0,余数为 10。
为什么还要显示十进制结果? 同时显示十进制等价值,便于你核对结果,也更容易理解二进制与十进制之间的换算关系。