IGCSE 電腦科學 (0478):綜合學習筆記 – 布林邏輯 (單元 10)
你好!歡迎來到激動人心的布林邏輯 (Boolean Logic) 世界。別擔心這個名稱聽起來很複雜;它其實是數學中最簡單的形式,因為它只處理兩個值:TRUE(真)或 FALSE(假)。電腦所做的每一個決定,從打開一個應用程式到運行自動駕駛汽車,歸根究柢都是這些簡單邏輯選擇的結果。理解這一章是掌握硬體運作方式的關鍵!
在本節中,我們將學習數位系統的基本建構模組:邏輯閘 (Logic Gates)。
1. 布林代數基礎
什麼是布林邏輯?
布林邏輯(或布林代數)是一套以數學家喬治·布爾 (George Boole) 命名的邏輯系統。它是所有數位電子設備和電腦處理的核心基礎。
- 它只使用兩種狀態:TRUE (真) 或 FALSE (假)。
- 在電腦科學中,這些狀態由二進位數字 (Binary Digits) 表示:
- TRUE 通常由二進位值 1 表示(或「開」/高電壓)。
- FALSE 通常由二進位值 0 表示(或「關」/低電壓)。
你知道嗎?
邏輯閘在 CPU 中是透過稱為電晶體 (transistors) 的微小元件物理實現的。數百萬個這樣的電晶體基於布林邏輯共同運作!
重點提示:
布林邏輯是決策的數學,僅使用 1 (TRUE) 或 0 (FALSE) 來運作。
2. 定義標準邏輯閘
邏輯閘 (Logic Gate) 是一種物理元件,它接收一個或多個二進位輸入,並根據特定的邏輯規則產生單一的二進位輸出。
IGCSE 課程大綱要求你掌握六個標準邏輯閘,外加一個變體 (XOR/EOR)。理論上,除了 NOT 閘外,所有邏輯閘通常僅限於兩個輸入,儘管你在繪製電路圖時,總共可能會用到最多三個輸入。
2.1 核心邏輯閘 (NOT, AND, OR)
A) NOT 閘 (反相器)
NOT 閘是最簡單的邏輯閘,因为它只有一個輸入。它會將輸入訊號反轉。
- 定義: 如果輸入為 FALSE (0),輸出則為 TRUE (1);反之亦然。
- 邏輯運算式: NOT A (或 \(\bar{A}\))
- 符號描述(見課程大綱第 34 頁): 一個三角形,輸出端帶有一個小圓圈(反相圓點)。
真值表 (NOT):
| A (輸入) | 輸出 X |
|---|---|
| 0 | 1 |
| 1 | 0 |
類比:如果交通燈「不」是綠色 (0),輸出則是停車 (1)。
B) AND 閘 (及閘)
AND 閘要求所有輸入都為 TRUE,輸出才會為 TRUE。
- 定義: 只有當輸入 A AND (且) 輸入 B 同時為 TRUE 時,輸出才為 TRUE (1)。
- 邏輯運算式: A AND B
- 符號描述(見課程大綱第 34 頁): 一個「D」字形。
真值表 (AND):
| A | B | 輸出 X |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
記憶法:想像成乘法。0 x 0 = 0,1 x 0 = 0,1 x 1 = 1。
C) OR 閘 (或閘)
OR 閘要求至少有一個輸入為 TRUE,輸出即為 TRUE。
- 定義: 如果輸入 A OR (或) 輸入 B(或兩者皆是)為 TRUE,輸出則為 TRUE (1)。
- 邏輯運算式: A OR B
- 符號描述(見課程大綱第 34 頁): 一個帶有凹陷輸入側的弧形盾牌形狀。
真值表 (OR):
| A | B | 輸出 X |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
記憶法:想像成加法(除了 1+1 仍然維持 1)。
2.2 衍生邏輯閘 (NAND, NOR, XOR/EOR)
D) NAND 閘 (反及閘)
NAND 閘是 AND 閘的相反。只有在所有輸入都為 TRUE 時,輸出才為 FALSE。
- 邏輯運算式: NOT (A AND B)
- 符號描述: AND 閘符號在輸出端帶有一個小圓圈(反相圓點)。
E) NOR 閘 (反或閘)
NOR 閘是 OR 閘的相反。只有在所有輸入都為 FALSE 時,輸出才為 TRUE。
- 邏輯運算式: NOT (A OR B)
- 符號描述: OR 閘符號在輸出端帶有一個小圓圈(反相圓點)。
F) XOR / EOR 閘 (互斥或閘)
只有當輸入不同時,XOR 閘才會輸出 TRUE。
- 定義: 如果輸入 A 為 TRUE OR 輸入 B 為 TRUE,但兩者不皆為 TRUE,則輸出為 TRUE (1)。
- 邏輯運算式: A XOR B
- 符號描述: OR 閘符號,但在輸入側多了一條額外的弧線。
真值表 (XOR):
| A | B | 輸出 X |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
快速回顧:
邏輯閘定義:
AND: 需要所有輸入皆為 1 (1, 1 -> 1)
OR: 需要至少一個輸入為 1 (0, 1 -> 1)
XOR: 需要剛好一個輸入為 1 (1, 0 -> 1)
NOT: 反轉輸入 (1 -> 0)
3. 處理邏輯電路與運算式
在考試中,你必須能夠在三種形式之間轉換:問題描述、邏輯運算式和邏輯電路。
3.1 邏輯運算式 (撰寫公式)
邏輯運算式是一種書寫輸入(A, B, C...)與最終輸出(X)之間關係的正式方法。
範例: 「若門感應器 (A) 被激活 AND 窗戶感應器 (B) 被激活,或者如果主電源 (C) 處於 OFF 狀態,警報 (X) 就會響起。」
第 1 步:指定變數並識別運算。
- A = 門感應器,B = 窗戶感應器,C = 主電源。
- 「A AND B」
- 「C 是 OFF」意味著 NOT C。
- 整體連結是 OR。
第 2 步:撰寫運算式。
X = (A AND B) OR (NOT C)
請務必使用括號來標示哪些運算先執行(如同普通代數)。NOT 運算通常僅應用於緊隨其後的變數。
3.2 繪製邏輯電路
要根據運算式繪製電路,請從左側的變數開始,向右側的最終輸出繪製。
運算式: X = (A AND B) OR (NOT C)
逐步建立電路:
- 在左側繪製 A、B 和 C 的輸入線。
- 第一個運算是 (A AND B)。將 A 和 B 連接到一個 AND 閘。該閘的輸出是你第一個暫時結果(我們稱之為 T1)。
- 第二個運算是 (NOT C)。將 C 連接到一個 NOT 閘。該閘的輸出為 T2。
- 最後的運算是 T1 OR T2。將 AND 閘的輸出 (T1) 和 NOT 閘的輸出 (T2) 連接到一個 OR 閘。
- OR 閘的輸出即為最終輸出 X。
注意:課程大綱要求在繪製電路時不要進行簡化,這意味著你必須精確使用問題描述或運算式中指定的邏輯閘。
常見錯誤:
繪製電路時,請確保將輸入連接到邏輯閘的線條在交匯處有明確的點(接點)。如果線條交叉而沒有圓點,則代表它們沒有連接。
重點提示:
撰寫運算式或繪製電路時,將問題分解為小型、易於管理的邏輯閘 (AND/OR/NOT),並始終使用括號來釐清運算順序。
4. 真值表 (決策圖)
真值表對於測試和記錄邏輯電路或運算式至關重要。它列出了所有可能的輸入組合,並顯示相應的輸出結果。
4.1 確定行數
真值表所需的行數取決於輸入的數量:
- 如果有 n 個輸入,則需要 \(2^n\) 行。
- 1 個輸入 (A) = \(2^1\) = 2 行 (0, 1)
- 2 個輸入 (A, B) = \(2^2\) = 4 行 (00, 01, 10, 11)
- 3 個輸入 (A, B, C) = \(2^3\) = 8 行 (000 到 111)
IGCSE 課程大綱限制電路最多為三個輸入,因此你最大的表格將有 8 行。
4.2 完成真值表 (逐步教學)
讓我們完成運算式 X = (A AND B) OR (NOT C) 的真值表。
第 1 步:設定輸入(3 個輸入需要 8 行)。
| A | B | C | T1 (A AND B) | T2 (NOT C) | X = T1 OR T2 |
|---|---|---|---|---|---|
| 0 | 0 | 0 | |||
| 0 | 0 | 1 | |||
| 0 | 1 | 0 | |||
| 0 | 1 | 1 | |||
| 1 | 0 | 0 | |||
| 1 | 0 | 1 | |||
| 1 | 1 | 0 | |||
| 1 | 1 | 1 |
第 2 步:計算中間列 (T1 和 T2)。
- T1 (A AND B): 只有當 A 和 B 皆為 1 時,T1 才為 1。(第 7 和第 8 行)
- T2 (NOT C): T2 是 C 的反轉。
第 3 步:計算最終輸出 (X)。
- X = T1 OR T2: 如果 T1 為 1 或 T2 為 1(或兩者皆是),則 X 為 1。
完成後的真值表:
| A | B | C | T1 (A AND B) | T2 (NOT C) | X = T1 OR T2 |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 1 | 1 |
| 0 | 0 | 1 | 0 | 0 | 0 |
| 0 | 1 | 0 | 0 | 1 | 1 |
| 0 | 1 | 1 | 0 | 0 | 0 |
| 1 | 0 | 0 | 0 | 1 | 1 |
| 1 | 0 | 1 | 0 | 0 | 0 |
| 1 | 1 | 0 | 1 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 | 1 |
重點提示:
在計算真值表時,請務必使用中間列(T1, T2 等)。這會使流程更清晰並減少錯誤,對於複雜運算式尤為重要。
5. 從真值表或電路中匯出運算式
有時你會得到一張完整的真值表或邏輯電路,並被要求寫出相應的邏輯運算式。
5.1 從真值表寫出運算式
寫出運算式最簡單的方法是只關注輸出為 TRUE (1) 的行。
使用上面的範例表格,輸出 X 在第 1、3、5、7 和 8 行為 1。
第 1 步:識別導致 TRUE 輸出 (1) 的輸入組合。
- 第 1 行: A=0, B=0, C=0。對應:(NOT A) AND (NOT B) AND (NOT C)
- 第 3 行: A=0, B=1, C=0。對應:(NOT A) AND B AND (NOT C)
- 第 5 行: A=1, B=0, C=0。對應:A AND (NOT B) AND (NOT C)
- 第 7 行: A=1, B=1, C=0。對應:A AND B AND (NOT C)
- 第 8 行: A=1, B=1, C=1。對應:A AND B AND C
第 2 步:使用 OR 將所有可能性組合起來。
X = ((NOT A) AND (NOT B) AND (NOT C)) OR ((NOT A) AND B AND (NOT C)) OR (A AND (NOT B) AND (NOT C)) OR (A AND B AND (NOT C)) OR (A AND B AND C)
除非特別要求,否則不必擔心簡化此運算式(這通常超出 IGCSE 核心課程的範圍)。只需列出所有以 OR 連接的 TRUE 組合即可。
5.2 從邏輯電路寫出運算式
要從電路寫出運算式,請從最靠近輸入端的邏輯閘開始,一路推導至最終輸出。
範例流程:
- 命名輸入 (A, B, C...)。
- 查看第一層邏輯閘(最靠近輸入端),並寫下其中間運算式(例如:T1 = NOT A)。
- 查看第二層邏輯閘。使用中間結果作為它們的輸入(例如,如果某個邏輯閘接收 B 和 T1,其輸出 T2 = B OR T1)。
- 繼續進行直到達到最終輸出 (X),並將所有中間變數代回最終運算式。
剛開始覺得困難別擔心!多練習繪製電路和填寫表格,運算式與電路之間的關係就會變得像本能一樣自然。
6. 邏輯閘的現實世界應用
邏輯電路無處不在,控制著需要根據輸入(如感應器)做出基本決定的自動化系統。
情境:中央供暖系統
若恆溫器 (T) 感測到溫度過低 (T=1),AND 系統定時器 (S) 目前設定為「ON」時間 (S=1),中央供暖爐 (X) 應開啟。此外,如果啟動了安全開關 (F) (F=1),供暖爐應立即關閉。
- 輸入: T(恆溫器低溫)、S(定時器 ON)、F(安全開關已啟動)。
- 期望輸出: X(供暖爐 ON)。
分析:
- T 和 S 必須同時為 1,因此我們需要一個 AND 閘。
- 安全開關 F 必須能停止供暖爐。如果 F=1,則 X 必須為 0,無論 T 和 S 為何。這意味著最終輸出必須與 NOT F 進行 AND 運算。
邏輯運算式:
X = (T AND S) AND (NOT F)
這個簡單的應用展示了邏輯閘如何確保自動化程序中的安全性和功能性,將複雜的需求轉化為簡單的二進位條件。
最終重點提示:
布林邏輯是電腦硬體的基礎語言。精通符號、定義,以及在真值表、運算式和電路之間進行轉換的過程——這對於單元 10 的考試成功至關重要!