什麼是二進位除法計算機?
這個工具能將一個二進位(base-2)數除以另一個二進位數,並同時以二進位與十進位顯示商與餘數。由於用手算二進位長除法很容易出錯,計算機會先把你輸入的數字轉成十進位,進行整數除法,再把結果換算回二進位,省去繁瑣計算。
使用方式
在第一個欄位輸入被除數(要被除的那個數),在第二個欄位輸入除數,兩者都只能使用 0 和 1 這兩個數字。按下計算,即可看到商與餘數。除數不可以是零,因為除以零在數學上沒有定義。
公式說明
假設 \(A\) 與 \(B\) 是輸入的二進位數,計算機會先求出 \(A_{10} = \text{parseBinary}(A)\) 與 \(B_{10} = \text{parseBinary}(B)\)。整數商為 $$Q = \left\lfloor \frac{A_{10}}{B_{10}} \right\rfloor,$$ 餘數為 $$R = A_{10} \bmod B_{10}.$$ 接著再把 \(Q\) 與 \(R\) 換算回二進位。這正是電腦執行無號整數除法的運作方式。
實例演算
以 \(1100_2\) 除以 \(10_2\) 為例。換成十進位後,\(1100_2 = 12\),\(10_2 = 2\)。於是 $$12 \div 2 = 6 \;\text{R}\; 0.$$ 再換算回二進位:\(6 = 110_2\),\(0 = 0_2\)。所以 $$1100 \div 10 = 110 \;\text{R}\; 0.$$
如何手工進行二進位數字除法
二進位長除法的運作方式完全相同於十進位長除法,但實際上更簡單:在每一步,除數要麼恰好整除當前位元(寫下1),要麼不能(寫下0)。沒有乘法表需要記憶——你只需將除數乘以 0 或 1。
計算 \(\text{被除數}_2 \div \text{除數}_2 = Q \;\text{R}\; 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{R}\; 1_2\) → 十進位中 \(11 \div 2 = 5\;\text{R}\;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{R}\; 100_2\) → 十進位中 \(4 \div 8 = 0\;\text{R}\;4\)。
- 驗證:\(8 \times 0 + 4 = 4\)。 ✓ 當被除數小於除數時,商始終為 0,餘數就是被除數本身。
例子 3 — 整除及驗證:\(11110_2 \div 110_2\)
- 十進位等值:\(11110_2 = 30\)、\(110_2 = 6\)。
- 移下位元直到到達
110→ 能整除一次;繼續移下位元,每次都在能整除時進行相減。 - 結果:\(11110_2 \div 110_2 = 101_2 \;\text{R}\; 0\) → 十進位中 \(30 \div 6 = 5\;\text{R}\;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 的數字系統,其中每個位置值是二的冪(\(1, 2, 4, 8, \dots\))而不是十的冪。
- 位元
- 單個二進位數字(0 或 1)——「二進位數字」的簡稱。
- LSB / MSB
- 最低有效位是最右邊的位元(1 的位置);最高有效位是最左邊的位元(最高位置值)。二進位長除法從 MSB 向 LSB 處理位元。
- 整數除法 / 向下取整
- 只保留整數商並捨棄任何小數部分的除法——正是二進位長除法與其餘數一起產生的結果。
- 模運算
-
只返回除法餘數的運算(通常寫為
mod或%)。對於 \(1011_2 \div 10_2\),模運算結果是 \(1_2\)。
常見問題
可以計算有小數的二進位數嗎?不行,這個計算機只處理無號的整數二進位數,並回傳整數商加上餘數。
如果除數比被除數大會怎樣?此時商為 0,餘數等於被除數。例如 \(10 \div 100\) 的結果是商為 0、餘數為 10。
為什麼也要顯示十進位?同時看到十進位的對應值,能方便你驗算結果,也更容易理解進位轉換的過程。