什么是二进制乘法计算器?
这款工具可以将两个二进制(即逢二进一、基数为 2)数字相乘,并以二进制字符串的形式返回乘积,同时给出两个输入值和计算结果对应的十进制数值。它是一款通用的数学工具——二进制运算在世界各地的规则都完全一致,因此不涉及任何国家或地区的特定限制。
使用方法
在每个输入框中输入一个二进制数(只能包含数字 0 和 1)。其他字符会被自动忽略,所以即使夹杂了空格或多余符号,也不会影响计算结果。点击「计算」按钮,即可同时看到二进制和十进制两种形式的乘积。
公式解析
二进制乘法可以采用「移位相加」的方式逐位计算,但最简洁的做法是:先将每个操作数转换为十进制,相乘后再把结果转换回二进制。用公式表示就是:
$$\text{P}_2 = \text{bin}\left(\text{dec}\left(\text{A}_2\right) \times \text{dec}\left(\text{B}_2\right)\right)$$举个例子,二进制数 1010 等于十进制 10,因为 \(1\cdot 8 + 0\cdot 4 + 1\cdot 2 + 0\cdot 1 = 10\)。
计算示例
计算 1010 × 11。首先进行转换:\(1010_2 = 10\),\(11_2 = 3\)。在十进制下相乘:
$$10 \times 3 = 30$$再把 30 转换回二进制:\(30 = 16 + 8 + 4 + 2 = 11110_2\)。因此,1010 × 11 的二进制结果为 11110。
如何手工进行二进制数乘法
二进制乘法使用与十进制相同的移位-相加长乘法过程,但由于乘数的每一位数字要么是0,要么是1,所以要简单得多。乘以1会复制被乘数;乘以0会得到一行零。唯一的实际工作是将每个部分积按其比特位置左移,然后使用二进制进位规则将这些行相加。
\((1010)_2 \times (11)_2\)的详细演示:
- 设置操作数。被乘数\(A = 1010_2 = 10\),乘数\(B = 11_2 = 3\)。预期的乘积是\(10 \times 3 = 30\)。
- 乘以最右边的乘数位(第0位 = 1)。由于该位是1,复制被乘数:部分积\(= 1010\),左移0位。
- 乘以下一个乘数位(第1位 = 1)。该位是1,所以再次复制被乘数,并将其左移1位(追加一个尾随零):部分积\(= 10100\)。
- 删除任何零行。如果一个乘数位是0,整行都是零,可以跳过。这里两行都保留。
- 用二进制加法将部分积相加。按位值对齐并相加,当两个1相遇时进位(\(1+1 = 10\),写下0进位1):
\(\;\;\;01010\)
\(+\,10100\)
\(=\,11110\) - 读取结果。二进制乘积是\((11110)_2\),等于十进制的30——证实了\(10 \times 3 = 30\)。你可以验证加法步骤本身为11110。
简而言之:为每个乘数位生成一个移位的行(0位对应零行),然后使用二进制加法对所有行求和。一个\(m\)位数和一个\(n\)位数的完整乘积永远不超过\(m+n\)位。
更多已解决的示例
每个示例显示两个输入的十进制转换、移位-相加部分积以及最终二进制乘积。
示例1——\(111_2 \times 101_2\)(7 × 5 = 35)
- 转换:\(111_2 = 7\),\(101_2 = 5\)。
- 乘数位(从右到左)为1、0、1:
- 第0位 = 1\(\Rightarrow 111\)(移位0)
- 第1位 = 0\(\Rightarrow\)零行,跳过
- 第2位 = 1\(\Rightarrow 11100\)(移位2)
- 相加:\(00111 + 11100 = 100011\)。
- 结果:\((100011)_2 = \)35,与\(7 \times 5 = 35\)相符。
示例2——\(1100_2 \times 1010_2\)(12 × 10 = 120)
- 转换:\(1100_2 = 12\),\(1010_2 = 10\)。
- 乘数\(1010_2\)的位(从右到左)为0、1、0、1:
- 第0位 = 0\(\Rightarrow\)跳过
- 第1位 = 1\(\Rightarrow 11000\)(移位1)
- 第2位 = 0\(\Rightarrow\)跳过
- 第3位 = 1\(\Rightarrow 1100000\)(移位3)
- 相加:\(0011000 + 1100000 = 1111000\)。
- 结果:\((1111000)_2 = \)120,与\(12 \times 10 = 120\)相符。
示例3——\(1_2 \times 1101_2\)(单位乘数,1 × 13 = 13)
- 转换:\(1_2 = 1\),\(1101_2 = 13\)。
- 乘数\(1\)有一个等于1的单一位,因此恰好有一个部分积,没有移位:\(1101\)。
- 只有一行,没有什么需要相加。
- 结果:\((1101)_2 = 13\)。任何二进制数乘以\(1\)都保持不变,就像十进制一样。
常见问题
如果我输入了非二进制数字怎么办? 除 0 和 1 以外的数字会在计算前被自动剔除,因此只会使用有效的二进制数位参与运算。
能处理很大的数字吗? 可以——输入按 64 位整数进行处理,所以即使是很长的二进制字符串,在该上限范围内也能保持准确。
为什么要显示十进制数值? 同时展示十进制形式,可以帮助你核对转换是否正确,并清楚地了解究竟是哪两个数在相乘。