什麼是二進位乘法計算機?
這個工具能將兩個二進位(base-2,即基數為 2)的數字相乘,並以二進位字串呈現乘積,同時附上兩個輸入值與結果的十進位對照。它是一款通用的數學工具——二進位運算在世界各地都遵循相同的規則,因此不受任何國家或地區的法規影響。
使用方式
在每個欄位中輸入一個二進位數字(只能使用 0 和 1)。系統會自動忽略其他字元,所以即使夾雜空格或多餘符號,也不會影響計算結果。按下計算後,即可同時看到二進位與十進位形式的乘積。
公式解析
二進位乘法可以用「位移相加(shift-and-add)」的方式逐位計算,但最簡潔的做法是:先把每個運算元轉成十進位,相乘後再把答案換回二進位。以公式表示為:
$$\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 位元整數進行處理,所以即使是很長的二進位字串,只要在此上限內都能維持精準。
為什麼要顯示十進位數值?對照十進位形式能讓你驗證轉換是否正確,並清楚了解究竟是哪些數字在相乘。