歡迎來到二進制算術的世界!
你好,未來的電腦科學家!這一章「二進制算術 (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 = 0。進位 1。
- 第 2 欄(二位): 0 + 1 + (進位 1) = 1 + 1 = 0。進位 1。
- 第 3 欄(四位): 1 + 0 + (進位 1) = 1 + 1 = 0。進位 1。
- 第 4 欄(八位): 0 + 0 + (進位 1) = 1。進位 0(無進位)。
結果: 0 1 0 0 0(這在十進制中是 8,計算正確!)
如果你使用固定位數(例如 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 = 0。
-
第 2 欄(二位): 0 - 1。我們無法進行此操作。我們必須向第 3 欄借位。
- 第 3 欄(四位)由 1 變為 0。
- 第 2 欄由 0 變為 102(即 2)。
- 計算:10 - 1 = 1。
- 第 3 欄(四位): 我們借走了 1,所以現在數字變為 0。計算:0 - 0 = 0。
- 第 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 x 0101 = 0101
部分積 1: 0 1 0 1
-
與下一個 1 相乘(乘數的二位):
1 x 0101 = 0101。我們必須將結果向左移一位(在末尾補一個 0)。
部分積 2: 0 1 0 1 0
- 與後面的 0 相乘:(結果全是 0,所以我們可以忽略它們,或者為了完整性加上 00000 和 000000)。
-
將部分積相加:
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,所以計算正確!
將一個二進制數字乘以 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
- 看被除數的第一位: 10 (除數) 比 1 小嗎?不是。商位為 0。
-
看前兩位: 10 (除數) 比 10 小嗎?不是,它們相等。
- 商位為 1。
- 減去除數:10 - 10 = 00。
-
將下一位 (1) 拉下來: 我們現在有 01。10 比 01 小嗎?不是。
- 商位為 0。
- 減去 0:01 - 00 = 01。
-
將最後一位 (0) 拉下來: 我們現在有 010。10 比 10 小嗎?不是,它們相等。
- 商位為 1。
- 減去除數:10 - 10 = 00。
商: 1 0 1(最終答案是 0101,即十進制的 5。餘數為 0)。
雖然我們學習了加、減、乘、除,但在現實中,複雜的計算機硬件通常透過快速的重複加法執行乘法,並透過快速的重複減法和位移 (shifting) 執行除法。運算越簡單,處理器運作的速度就越快!
你現在已經掌握了電腦計算的基本原理!請繼續練習這些逐步計算的方法,二進制算術很快就會成為你的第二天性。