歡迎來到二進制算術的世界!

你好,未來的電腦科學家!這一章「二進制算術 (Binary Arithmetic)」是電腦進行思考和計算的核心基礎。電腦所做的一切——從運行遊戲到處理文檔——歸根究底都是利用 0 和 1 進行極其快速的加、減、乘、除運算。

如果這聽起來讓你感到壓力,不用擔心!二進制算術其實比十進制算術更簡單,因為需要記住的規則少得多。我們會一步步拆解每一種運算,確保你能夠充滿自信地處理 1 和 0。讓我們開始計算吧!

為什麼二進制算術很重要?(背景:數據表示)

在「數據表示 (Data Representation)」一節中,我們學到所有數據(數字、文本、圖像)都必須表示為二進制數字(位元,bits)。如果數據是以位元形式存儲的,那麼對這些數據進行的任何運算也必須使用二進制。電腦的中央處理器 (CPU) 包含一個算術邏輯單元 (ALU),它就是專門為了執行這些二進制運算而設計的。


1. 二進制加法(基礎)

二進制加法是最基本的運算。如果電腦能進行加法,它就能透過調整加法過程來進行減法、乘法和除法。

二進制加法的四條黃金規則

你只需要記住四條規則!

  • 規則 1: 0 + 0 = 0
  • 規則 2: 0 + 1 = 1
  • 規則 3: 1 + 0 = 1
  • 規則 4: 1 + 1 = 0 (並向高位進 1)

解釋容易混淆的規則(規則 4):
試想一下十進制:當你計算 5 + 5 時,結果是 10。0 寫在個位,而 1 進位到十位。
在二進制中,1 + 1 等於二 (2)。因為我們沒有代表「2」的單一符號,所以寫作 102。0 保留在原位,而 1 進位到下一欄。

補充情況(三個 1 相加):

  • 規則 5: 1 + 1 + 1 = 1 (並向高位進 1)
    (當你有兩個數字加上前一位的進位時就會出現這種情況。1+1+1 等於三,寫作 112。)
步驟示範:計算 5 + 3 (0101 + 0011)

我們從最右邊的那一欄(最低有效位,LSB)開始。

數字:
     0 1 0 1 (5)
+ 0 0 1 1 (3)
     -----

  1. 第 1 欄(個位): 1 + 1 = 0。進位 1
  2. 第 2 欄(二位): 0 + 1 + (進位 1) = 1 + 1 = 0。進位 1
  3. 第 3 欄(四位): 1 + 0 + (進位 1) = 1 + 1 = 0。進位 1
  4. 第 4 欄(八位): 0 + 0 + (進位 1) = 1。進位 0(無進位)

結果: 0 1 0 0 0(這在十進制中是 8,計算正確!)

🚫 必須避免的常見錯誤:溢位 (Overflow)
如果你使用固定位數(例如 8 位元),而你的答案需要第九位(最後的進位),這就稱為溢位 (overflow)。電腦無法存儲完整的結果,因此答案將會出錯。這是存儲空間有限系統中的一個關鍵概念。

2. 二進制減法(借位)

二進制減法使用借位 (borrowing) 的概念,這與你在小學學到的減法非常相似。

基本的減法規則
  • 規則 1: 0 - 0 = 0
  • 規則 2: 1 - 1 = 0
  • 規則 3: 1 - 0 = 1
  • 規則 4(借位): 0 - 1 = 1 (並向下一欄借位)

解釋借位(規則 4):
當你需要進行 0 - 1 時,你必須看左邊的位元(下一個更高位的值)並向它 1。
在二進制中,當你借 1 時,你取回的值是 2(即 102)。
因此,0 - 1 變成了 10 - 1,結果等於 1。

類比:想像你需要減去 1 個蘋果,但你只有 0 個蘋果。你向鄰居借了一袋蘋果(價值 2 個蘋果)。你從袋子裡拿走 1 個(剩下 1 個),而鄰居那邊現在就少了一袋。

步驟示範:計算 5 - 3 (0101 - 0011)

數字:
     0 1 0 1 (5)
- 0 0 1 1 (3)
     -----

  1. 第 1 欄(個位): 1 - 1 = 0。
  2. 第 2 欄(二位): 0 - 1。我們無法進行此操作。我們必須向第 3 欄借位
    • 第 3 欄(四位)由 1 變為 0。
    • 第 2 欄由 0 變為 102(即 2)。
    • 計算:10 - 1 = 1。
  3. 第 3 欄(四位): 我們借走了 1,所以現在數字變為 0。計算:0 - 0 = 0。
  4. 第 4 欄(八位): 0 - 0 = 0。

結果: 0 0 1 0(這在十進制中是 2,計算正確!)

💡 重點複習:加法與減法
  • 加法關鍵: 尋找 "1 + 1"。答案是 0,並且進位 1。
  • 減法關鍵: 尋找 "0 - 1"。你必須借位 1,使 0 變成 10(即 2)。

3. 二進制乘法

二進制乘法是所有運算中最簡單的一個!它使用與十進制長乘法相同的「位移與相加」方法,但規則簡單得多,因為你只需要處理 0 或 1。

乘法的四條黃金規則
  • 0 x 0 = 0
  • 0 x 1 = 0
  • 1 x 0 = 0
  • 1 x 1 = 1

你有發現嗎?只要有一個 0,答案就是 0。如果兩者都是 1,答案就是 1。超級簡單!

步驟示範:計算 5 x 3 (0101 x 0011)

過程分為兩步:1. 生成部分積。 2. 將它們相加。

數字:
          0 1 0 1 (被乘數: 5)
x      0 0 1 1 (乘數: 3)
          -----

  1. 與最右邊的 1 相乘(乘數的個位):
    1 x 0101 = 0101

    部分積 1: 0 1 0 1

  2. 與下一個 1 相乘(乘數的二位):
    1 x 0101 = 0101。我們必須將結果向左移一位(在末尾補一個 0)。

    部分積 2: 0 1 0 1 0

  3. 與後面的 0 相乘:(結果全是 0,所以我們可以忽略它們,或者為了完整性加上 00000 和 000000)。
  4. 將部分積相加:

              0 1 0 1
    +      0 1 0 1 0
              -------
    (記得第 1 節的二進制加法規則!)
    結果: 0 1 1 1 1

結果: 011112 在十進制中是 15 (8 + 4 + 2 + 1)。因為 5 x 3 = 15,所以計算正確!

🧠 記憶技巧:位移 (Shifting)
將一個二進制數字乘以 2,等同於直接在右端添加一個 0(左移一位)。
例子: 0010 (2) 變成 0100 (4)。這種位移就是電腦快速執行乘法的方法。

4. 二進制除法

電腦執行二進制除法通常使用一種稱為重複減法的方法,但對於手動計算,我們使用標準的長除法,這在二進制中更簡單,因為只有兩個選擇:0 或 1。

  • 如果除數能納入部分被除數中,商位為 1。
  • 如果除數不能納入,商位為 0。
步驟示範:計算 10 / 2 (1010 ÷ 10)

我們將 1010 (10) 除以 10 (2)。答案應該是 5 (0101)。

除數: 10     被除數: 1 0 1 0

  1. 看被除數的第一位: 10 (除數) 比 1 小嗎?不是。商位為 0。
  2. 看前兩位: 10 (除數) 比 10 小嗎?不是,它們相等。
    • 商位為 1。
    • 減去除數:10 - 10 = 00。
  3. 將下一位 (1) 拉下來: 我們現在有 01。10 比 01 小嗎?不是。
    • 商位為 0。
    • 減去 0:01 - 00 = 01。
  4. 將最後一位 (0) 拉下來: 我們現在有 010。10 比 10 小嗎?不是,它們相等。
    • 商位為 1。
    • 減去除數:10 - 10 = 00。

商: 1 0 1(最終答案是 0101,即十進制的 5。餘數為 0)。

🔑 重點總結:效率
雖然我們學習了加、減、乘、除,但在現實中,複雜的計算機硬件通常透過快速的重複加法執行乘法,並透過快速的重複減法和位移 (shifting) 執行除法。運算越簡單,處理器運作的速度就越快!

你現在已經掌握了電腦計算的基本原理!請繼續練習這些逐步計算的方法,二進制算術很快就會成為你的第二天性。