歡迎來到邏輯的世界!
你好,未來的電腦科學家!如果「邏輯」(Logic)這個詞聽起來讓你感到壓力,別擔心。在電腦科學中,邏輯其實就是電腦用來做決策的規則,這也是所有電路、處理器和軟體運作的絕對基礎。
你可以把邏輯想像成電腦的一種思考方式:「如果這個條件是成立的(True)且(AND)那個條件也是成立的,那麼我就執行這個程式。」
在本章中,我們將透過稱為邏輯閘(Logic Gates)的簡單元件來拆解這些規則,並使用真值表(Truth Tables)將它們視覺化。看完這一章,你就能讀懂 1 與 0 的秘密語言了!
1. 基礎概念:布林邏輯(Boolean Logic,真或假)
所有數位邏輯都是基於數學家 George Boole 的研究,這就是為什麼我們稱之為布林邏輯。電腦運作時只有兩種可能性:
- 真(True)(由數字 1 或 ON 表示)
- 假(False)(由數字 0 或 OFF 表示)
輸入與輸出的概念
每一個邏輯運算都會接收一個或多個輸入(Inputs)(0 或 1),並精確地產生一個輸出(Output)(單個 0 或 1)。
類比:想想看電燈開關。
- 輸入(開關):開(1)或關(0)。
- 輸出(燈泡):亮(1)或滅(0)。
快速複習:一切事物都可以簡化為 1 或 0。這是僅有的兩種狀態。
2. 邏輯閘——電路的建築組件
邏輯閘(Logic Gate)是一種微小的電子電路(由電晶體構成),負責執行基本的布林運算。電腦內每一個複雜的功能,都是由成千上萬個這種簡單的閘連接在一起組成的。
2.1 NOT 閘(反相器)
NOT 閘是最簡單的閘,它只有一個輸入和一個輸出。
- 規則:它會反轉(invert)輸入訊號。如果你輸入 1,你會得到 0;反之亦然。
- 關鍵術語:這通常被稱為反相器(Inverter)。
- 符號小撇步:NOT 閘的符號是一個三角形,輸出端上有一個小圓圈(俗稱「泡泡」)。泡泡總是代表「反轉」或「NOT」。
類比:NOT 閘就像是在說「不」。如果答案是「是」(1),輸出就會變成「不」(0)。
NOT 閘真值表
| 輸入 (A) | 輸出 (X) |
|---|---|
| 0 | 1 |
| 1 | 0 |
2.2 AND 閘(需求閘)
AND 閘需要兩個或多個輸入,但我們通常會觀察兩個輸入(A 和 B)。
- 規則:只有當所有輸入都為 1(True)時,輸出(X)才會是 1(True)。
- 只要其中一個輸入為 0,輸出就是 0。
- 助記方法:把 AND 閘想像成一個高標準的關卡。它需要 A 且 B 都完美達成(1),才會給你一個結果 1。
類比:要開啟高安全性金庫,你需要同時插入鑰匙 A 和 鑰匙 B。如果缺少其中一把(0),金庫就保持鎖定(0)。
AND 閘真值表
| 輸入 (A) | 輸入 (B) | 輸出 (X) |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
2.3 OR 閘(彈性閘)
OR 閘同樣接收兩個或多個輸入(A 和 B)。
- 規則:只要有任一輸入為 1(True),輸出(X)就會是 1(True)。
- 只有當所有輸入皆為 0 時,輸出才會是 0。
- 助記方法:把 OR 閘想像得很靈活。你可以帶 A 或 B(或兩者皆有!)就能過關。
類比:要進入俱樂部,你需要學生證 或 護照。只要你有其中一樣(1),你就能進入(1)。只有兩者皆無(0)時你才會被擋下(0)。
OR 閘真值表
| 輸入 (A) | 輸入 (B) | 輸出 (X) |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
第 2 節重點整理:AND 需要所有輸入皆為 1;OR 只需要至少有一個輸入為 1;NOT 則是直接翻轉輸入。
3. 衍生邏輯閘
透過組合基礎邏輯閘(NOT、AND、OR),工程師們創造出更多在電腦電路中非常常見的特殊閘。
3.1 XOR 閘(互斥或)
XOR 代表 Exclusive OR(互斥或)。當你想要做一個決策,但要求不可兩者同時成立時,就會用到這個閘。
- 規則:如果輸入不同,輸出(X)即為 1(True)。
- 如果輸入相同(皆為 0 或皆為 1),輸出則為 0。
- 用途:XOR 在算術電路(如半加法器)和錯誤檢查中非常重要。
類比:在餐廳裡,你可以選湯 或 沙律,但「不可」兩者都要。如果你兩者都選(1, 1),你就破壞了規則,結果輸出就是 0。
XOR 閘真值表
| 輸入 (A) | 輸入 (B) | 輸出 (X) |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
3.2 NAND 閘(反及閘)
NAND 閘就是一個 AND 閘後面緊接著一個 NOT 閘。
- 規則:除了所有輸入皆為 1 的情況外,輸出永遠為 1。它與 AND 的結果完全相反。
- 符號小撇步:看起來就像 AND 的符號加上一個小「NOT 泡泡」在輸出端。
- 你知道嗎?NAND 有時被稱為「萬能閘」,因為你只需要組合 NAND 閘,就能建構出任何其他的閘(AND、OR、NOT、XOR)!
3.3 NOR 閘(反或閘)
NOR 閘就是一個 OR 閘後面緊接著一個 NOT 閘。
- 規則:只有當所有輸入皆為 0 時,輸出才會是 1。它與 OR 的結果完全相反。
- 符號小撇步:看起來就像 OR 的符號加上一個小「NOT 泡泡」在輸出端。
NAND 與 NOR 真值表(相反關係)
看看它們與母閘(AND 和 OR)的對比:
| 輸入 (A, B) | AND | NAND (NOT AND) | OR | NOR (NOT OR) |
|---|---|---|---|---|
| 0, 0 | 0 | 1 | 0 | 1 |
| 0, 1 | 0 | 1 | 1 | 0 |
| 1, 0 | 0 | 1 | 1 | 0 |
| 1, 1 | 1 | 0 | 1 | 0 |
常見錯誤:學生經常搞混 XOR 與 OR。請記住,OR 允許(1, 1)的情況,但 XOR 明確排除(1, 1)。
邏輯閘速記總結
- NOT:翻轉訊號。
- AND:需要完美配合 (1, 1)。
- OR:至少需要一個 1。
- XOR:需要兩者不同 (0, 1) 或 (1, 0)。
- NAND/NOR:分別為 AND/OR 的相反輸出。
4. 真值表——映射邏輯
真值表(Truth Table)是一種數學表格,用於列出特定邏輯電路或邏輯閘所有可能的輸入組合及其對應的輸出。
4.1 計算行數
可能的輸入組合數量(因此也就是表格的行數)取決於輸入的數量(\(n\))。
計算公式為: $$ \text{行數} = 2^n $$
例如:
- 如果 \(n=1\) 個輸入(如 NOT),你需要 \(2^1 = 2\) 行(0 和 1)。
- 如果 \(n=2\) 個輸入(如 AND、OR),你需要 \(2^2 = 4\) 行。
- 如果 \(n=3\) 個輸入(A, B, C),你需要 \(2^3 = 8\) 行。
4.2 步驟教學:如何填寫輸入欄位
建立真值表時,系統化地列出輸入組合非常重要,這樣才不會漏掉任何一種情況。
範例:建立 2 個輸入(A 和 B)的真值表:
-
A 欄:將總行數(4)除以 2。前一半(2 行)填 0,後一半(2 行)填 1。
(0, 0, 1, 1) -
B 欄:將之前的區塊(2)再除以 2。交替填寫 0 和 1。
(0, 1, 0, 1)
這種系統化方法(二進位計數法)能確保你涵蓋從 00 到 11 的每一種可能性。
4.3 將邏輯應用於複雜電路
在 IGCSE 電腦科學考試中,你可能會被要求計算多個邏輯閘組合而成的電路輸出。
範例步驟:求 (A AND B) OR C 的輸出 (X)
這個電路有 3 個輸入 (A, B, C),所以我們需要 8 行(\(2^3\))。為了解決這個問題,我們從左到右順序地(一次一個閘)處理。
-
設定:建立 A、B、C 的 8 行表格,並增加一個中間欄位來處理第一個運算:(A AND B)。
A B C 中間結果 (A AND B) 輸出 X 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 - 解決中間欄位 (A AND B):只觀察 A 和 B 來填寫此欄。記得:AND 只有在 A 和 B 皆為 1 時才輸出 1。
- 解決最終輸出 X ((A AND B) OR C):現在,將「中間結果」欄位和 C 作為最終 OR 閘的兩個輸入。記得:OR 只要其中一個輸入為 1,輸出就是 1。
| A | B | C | 中間結果 (A AND B) | 輸出 X (Int. OR C) |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 | 1 |
| 0 | 1 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 0 | 0 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 1 |
呼!如果覺得步驟很多也不用擔心。訣竅就是把複雜問題拆解成較小的、單一的邏輯閘運算。只要你熟練掌握 AND、OR 和 NOT,你就能解決任何電路問題!
第 4 節重點整理:真值表將每種輸入可能性 (\(2^n\)) 對應到最終輸出。記得總是使用中間欄位,分步驟來解題。
🌟 最終學習貼士:連結到電腦實際運作 🌟
為什麼我們要學這個?電腦做的每一個決定——檢查密碼是否正確、決定遊戲中的角色是否移動、或是執行一條指令——歸根結底都是由數以百萬計的微小邏輯閘共同運作,並只處理 1 和 0。邏輯就是運算!