透過 MCP 連接 →

輸入計算

數學公式

廣告

結果

差(二進位)
111
= 7 in decimal
第一個數(十進位) 10
第二個數(十進位) 3
差(十進位) 7

什麼是二進位減法計算機?

這個工具能將一個二進位(base-2)數減去另一個二進位數,並同時以二進位與十進位顯示答案。二進位只使用 0 和 1 兩個數字,每一個位置都代表 2 的次方。用手算二進位減法時必須在各個位數之間「借位」,過程繁瑣又容易出錯——這個計算機可以瞬間完成運算,並透過十進位算術驗證結果是否正確。

使用方法

輸入第一個二進位數(被減數)與第二個二進位數(減數),只能使用 0 與 1。按下計算後,即可看到二進位的差,以及每個輸入值與結果的十進位數值。如果第二個數較大,結果會以負的二進位數呈現(前面加上負號)。

公式說明

最簡單也最可靠的做法,是先把每個二進位字串轉換成十進位整數,進行一般的減法運算,再把差轉回二進位:

$$\text{result} = \text{toBinary}\left( \text{parseBinary}(a) - \text{parseBinary}(b) \right)$$

舉例來說,二進位數 1010 等於 \(1\cdot 8 + 0\cdot 4 + 1\cdot 2 + 0\cdot 1 = 10\)(十進位)。這種方法避開了手動借位的麻煩,卻能得到完全相同的結果。

實際範例

用 1010 減去 11。先進行轉換:\(1010_2 = 10_{10}\),\(11_2 = 3_{10}\)。接著 \(10 - 3 = 7\)。再把 7 轉回二進位得到 \(111_2\)。因此 \(1010 - 11 = \mathbf{111}\)。

如何手動進行二進制減法(借位法)

直接二進制減法的原理與十進制減法相同,但在二進制中,每一列只能是 0 或 1。關鍵概念是借位:當你必須從 0 中減去 1 時,你從左邊的下一列借 1,將當前列變成 \(10_2\)(十進制中是 2),所以 \(10_2 - 1_2 = 1_2\)。

  1. 在右側對齐數字。將較大的值(被減數)寫在上面,較小的值(減數)寫在下面,使最低有效位對齐。用前導零填充較短的數字,使兩者寬度相同。
  2. 從右到左,一次一列進行計算。在每一列中計算上方位減下方位。
  3. 應用列規則:\(0-0=0\)、\(1-0=1\)、\(1-1=0\),以及 \(0-1\) 需要借位。
  4. 借位規則:對於 \(0-1\),從左邊的下一列借 1。當前列變成 \(10_2 - 1 = 1\),而被借出的列減少 1(如果該列本身是 0,你必須再次借位,向左級聯)。
  5. 讀取結果,從下面一行讀取,去掉任何前導零。

計算示例:\(1010_2 - 0011_2\)。兩個都填充為四位。十進制檢驗:\(10 - 3\)。

  1. 第 0 列(最右邊):上方 0,下方 1 → \(0-1\) 需要借位。從第 1 列借 1,得到 \(10_2 - 1 = 1\)。結果位 = 1。第 1 列的上方位從 1 降至 0。
  2. 第 1 列:借出後,上方是 0,下方是 1 → \(0-1\) 需要借位。從第 2 列借 1,得到 \(10_2 - 1 = 1\)。結果位 = 1。第 2 列的上方位從 0... 它是 0,所以借位級聯到第 3 列,使第 2 列讀作 \(10_2\) 然後借出 1 留下 1。
  3. 第 2 列:在級聯借位後它保有 1,下方是 0 → \(1-0=0\)。結果位 = 0
  4. 第 3 列:上方原為 1,但它借給第 2 列 1,留下 0;下方是 0 → \(0-0=0\)。結果位 = 0

從下到上按列讀取得到 \(0111_2\),即 111\(_2\),等於十進制的 \(7\) — 與 \(10 - 3 = 7\) 相符。

更多計算示例

每個示例都顯示二進制減法及其十進制等價,以便您可以驗證算術。

二進制減法 十進制檢驗 結果(二進制) 結果(十進制)
\(1101_2 - 101_2\) \(13 - 5\) 1000\(_2\) 8
\(11_2 - 1010_2\) \(3 - 10\) \(-111_2\) \(-7\)
\(110_2 - 110_2\) \(6 - 6\) \(0_2\) 0

示例 1 — \(1101_2 - 101_2\)。將減數填充為 \(0101_2\)。從右到左逐列計算:\(1-1=0\);\(0-0=0\);\(1-1=0\);\(1-0=1\)。得到 \(1000_2 = 8\),確認 \(13 - 5 = 8\)。

示例 2 — \(11_2 - 1010_2\)(負結果)。此處減數(\(10\))大於被減數(\(3\)),所以答案是負數。交換後用較大的數減去較小的數:\(1010_2 - 0011_2 = 0111_2 = 7\),然後恢復符號得到 \(-111_2 = -7\)。這與 \(3 - 10 = -7\) 相符。

示例 3 — \(110_2 - 110_2\)(值相等)。每一列都減成 0,沒有借位:\(0-0\)、\(1-1\)、\(1-1\) 都得 0,所以差是 \(0_2 = 0\)。

關鍵術語

被減數
被減去的數字 — 寫在上面的值。在 \(1010_2 - 11_2\) 中,被減數是 \(1010_2\)。
減數
要減去的數字 — 寫在下面的值。在 \(1010_2 - 11_2\) 中,減數是 \(11_2\)。
減法的結果:\(\text{被減數} - \text{減數}\)。
借位
當一列需要 \(0-1\) 時,從下一個更高的列取 1,使當前列變成 \(10_2\)(值 2),允許 \(10_2 - 1 = 1\)。被借出的列減少 1,如果該列也是 0,借位可能進一步向左級聯。
二進制/基數 2
只使用數字 0 和 1 的位置記數系統,其中每個位置值是 2 的冪(\(\dots, 8, 4, 2, 1\))。
位(二進制位)
單個二進制位,要麼是 0 要麼是 1。一組位代表更大的數字;例如 \(1010_2\) 有四位。
二的補數
計算機表示有符號整數的常見方式。負值通過反轉其絕對值的所有位並加 1 形成,這允許在固定位寬內將減法作為加法執行負數。
符號-絕對值
另一種有符號表示法,其中最左邊的位表示符號(0 = 正,1 = 負),其餘位給出絕對值。易於讀取,但有兩個零的編碼,比二的補數更不方便進行算術運算。

常見問題

結果可以是負數嗎?可以。如果減數比較大,計算機會回傳一個負的二進位數值,例如 -101。

如果輸入了無效字元怎麼辦?只有 0 和 1 才是有效的二進位數字。任何非二進位的輸入都會被視為 0。

這和二的補數(two's complement)減法一樣嗎?十進位數值會相同,但本工具顯示的是「符號—數值」形式的結果(也就是加上負號),而非固定位寬的二的補數表示法。

最後更新: