---
# System prepended metadata

title: 基礎邏輯電路（上）
tags: [電腦雜談, 計算機概論, 電腦]

---

# 基礎邏輯電路（上）

[TOC]

歡迎你點入本篇文章，會促成我想做這篇的原因，主要是因為在上計概時，突然浮現很多靈感，跟一大堆的問題（~~教授，為什麼要講的這麼淺白呢？我想知道更多啊啊！~~），為了一次解決我所有的困惑，於是製作本篇文章。

若文章有任何疑點及錯誤的地方歡迎提出。

本篇文章主要作為個人學習用途，撰筆形式概要以筆記形式撰筆。另外本篇文章以入門為導向，若需詳細閱讀相關學門，請搜尋「數位系統導論」或「數位系統設計」。

## 布林代數式（Boolean Algebra）

Boolean Algebra 是數學當中的一個分支，專門用來處理 0 跟 1 這種真（True）假（False）值。主要針對二進位變數以及邏輯運算，如最基礎的 AND、OR、NOT。

### 邏輯運算（Logical Operations）

- AND or Conjunction（關聯）
- OR or Disjunction（無關）
- NOT or Negation（否定）

AND 用布林代數式可表示為 $A \cdot B$ 或是 $A \wedge B$ 。

OR 用布林代數式可表示為 $A + B$ 或是 $A \lor B$ 。

NOT 用布林代數式可表示為 $\rightharpoondown A$ 或 $NOTA$ ，那本系的教授是用一個 bar 來表示 NOT，如 $\overline{A}$ 。

AND 要全部輸入都是 1，輸出才會是 1。

OR 只要其中一個輸入是 1，輸出就會都是 1，要產生 0 的情況，一定要全部輸入都是 0。

NOT 會將狀態反轉，就是 0 變成 1，1 變成 0。

### 真值表（Truth Table）

真值表（Truth Table）是一種用於邏輯運算的數學表格，主要用來列出所有可能的輸入組合下，布林代數式的結果。

如果有兩個輸入端如 A、B，那麼其輸出的結果會是 $2^2 = 4$ 種可能，三個輸入端就是 $2^3 = 8$ 種可能結果，由此可以推算出他的公式應該是 $2^n$ ，也就是輸出端的可能結果， n 是輸入端的個數。

以下是 AND、OR、NOT 個別的真值表：

AND（ $A \cdot B$ ）：

| A | B | $A \cdot B$ |
| -------- | -------- | -------- |
| 0 | 0 | 0 |
| 1 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 1 | 1 |

OR（ $A + B$ ）：

| A | B | $A + B$ |
| -------- | -------- | -------- |
| 0 | 0 | 0 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 1 | 1 |

NOT（ $\overline{A}$ ）：

| A | $\overline{A}$ |
| -------- | -------- |
| 0 | 1 |
| 1 | 0 |

## 邏輯電路與布林代數式之間的轉換

在此之前我們先看看 AND、OR、NOT 在電路上是怎麼表示的：

![image](https://hackmd.io/_uploads/rJ4-9yYpgg.png)

Image Source：[Logic Circuit: AND Circuit | 臺灣東芝電子零組件股份有限公司 | 台灣](https://toshiba.semicon-storage.com/tw/semiconductor/knowledge/e-learning/micro-intro/chapter1/logic-circuit-and-circuit.html)

AND 是長的很像子彈的那個，OR 長的像是箭頭一樣，NOT 長的像是三明治上插一個竹籤加上綠豆的東西。總之看你怎麼去想像XD。

在上圖中，Y 是輸出端，那這邊就可以用布林代數式給他代進去了：

- AND： $Y = A \cdot B$
- OR： $Y = A + B$
- NOT： $Y = \overline{A}$

反之，想要用布林代數式表示回去電路符號的話，就照上面的圖去畫即可。

### 範例

e.g. 1 以下圖片是 AND 跟 OR 的邏輯電路圖，要求出 x 的布林代數式。

這邊觀察 $A \cdot B$ 的輸出端連接到 OR 的輸入端，那 OR 另一端輸入端為 C，所以根據前面的布林代數式規則，最後得到結果就是 $x = A \cdot B + C$ 。

![image](https://hackmd.io/_uploads/HJ12oyFTle.png)

e.g. 2 以下圖片為上圖的反例，試求出 x 的布林代數式。

這邊就只是將原來的 AND 改成 OR，後面的 OR 改成 AND，最後可得到 $x = (A + B) \cdot C$ 。

![image](https://hackmd.io/_uploads/r1C0nktTge.png)

e.g. 3 求出以下 (a) 和 (b) 中 x 的布林代數式。

先看 (a)，可以發現 NOT 出現在 A 輸入端，因此先得到 $\overline{A}$ 。另一端 B 沒有任何變動，最終可輸出 $x = \overline{A} + B$ 。

接下來 (b)，同樣檢查 A、B 上面有沒有東西，沒有，那就看輸出端，發現有一個 NOT，那就表示要將原本要輸出的 $A \cdot B$ 加上 NOT，變成 $x = \overline{A \cdot B}$ 。

![image](https://hackmd.io/_uploads/ByJL6kFael.png)

## 布林代數式表格（延伸版）

| Operations | Symbol | Definition |
| -------- | -------- | -------- |
| AND | $\cdot$ or $\wedge$ | 只有當兩個輸入都為真（True）時才回傳真（True）。 |
| OR | $+$ or $\lor$ | 如果至少有一個輸入為真（True），則回傳真（True）。 |
| NOT | $\overline{A}$ or $\rightharpoondown A$ <br> or $\sim$A | 反轉狀態。 |
| XOR | $\oplus$ | 如果剛好奇數個輸入為真（True），則回傳真（True）。 |
| NAND | $\downarrow$ | 只有當兩個輸入都為真（True）時才回傳假（False）。 |
| NOR | $\uparrow$ | 如果至少一個輸入為真（True），則回傳假（False）。 |
| XNOR | $\leftrightarrow$ | 如果兩個輸入相等，則回傳真（True）。 |

### XOR

XOR 的 X 為 exclusive，然後以下是他的真值表：

| A | B | $A \oplus B$ |
| -------- | -------- | -------- |
| 0 | 0 | 0 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 1 | 0 |

電路圖：

![image](https://hackmd.io/_uploads/SJALelKalx.png)

Image Source：[XOR Gate | Tutorial with examples, truth table,and downloadable assets – Hacky Labs](https://hackylabs.com/blogs/engineering/xor-gate?srsltid=AfmBOorjY5IqpeWkgtIHvw-90vIxWhsrN89eybFBys5UmVP6lLRs3oHS&shpxid=c08ddd86-897d-4a1b-9941-e1eb224acd63)

XOR 是怎麼來的呢？首先 XOR 的意義是兩個輸入不同才為真，相同為假，由此可推出布林代數式應該是 $x = (\overline{A} \cdot B)+(A+\overline{B})$ 。

兩個輸入其中一個是 1 輸出就是 1，這邊用到 AND 的概念，以 $\overline{A} \cdot B$ 為例，首先可以畫畫看他的真值表：

| A | B | $\overline{A} \cdot B$ |
| -------- | -------- | -------- |
| 0 | 0 | 0 |
| 1 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 1 | 0 |

其中可發現 0、1 輸出 1，其他都是 0，這樣就確保了 XOR 的第一個條件，而 $A+\overline{B}$ 的真值表則是做與他相反的輸入，就會變成 1、0 輸出 1，那這時候再把這兩個輸出結果 OR 起來，最後就會得到 XOR，請看以下的邏輯電路圖：

![image](https://hackmd.io/_uploads/Hy5imet6lg.png)

Image Source：[設計CMOS邏輯：XOR，XNOR和變速箱門](https://www.ic-components.tw/blog/designing-cmos-logic-xor,xnor,and-transmission-gates.jsp)

你會看到 B 直直對過去會有個小小的圈圈，那個是 NOT 的省略方法，而 A 對到下面的 AND 也是如此，都是表示 $\overline{A}$ 或 $\overline{B}$ 的省略方法。

### NAND

NAND 其實就是在 AND 的基礎下，在他的輸出端加上一個 NOT，就變成 NAND 了。

以下是他的真值表（把 AND 的真值表拿過來，然後輸出全部 NOT 一遍就得到了）：

| A | B | $A \downarrow B$ |
| -------- | -------- | -------- |
| 0 | 0 | 1 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 1 | 0 |

以下圖示說明了 NAND 的由來：

![image](https://hackmd.io/_uploads/r14C4lFael.png)

Image Source：[NAND and NOR | Spinning Numbers](https://spinningnumbers.org/a/logic-nand-nor.html)

### NOR

NOR 的概念其實也跟 NAND 一樣，都是在輸出端加上 NOT。

以下是他的真值表：

| A | B | $A \uparrow B$ |
| -------- | -------- | -------- |
| 0 | 0 | 1 |
| 1 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 1 | 0 |

以下圖示說明了 NOR 的由來：

![image](https://hackmd.io/_uploads/H1s4Betaxe.png)

Image Source：[NAND and NOR | Spinning Numbers](https://spinningnumbers.org/a/logic-nand-nor.html)

### XNOR

XNOR 也一樣，就在 XOR 的基礎下，在輸出端後面加上 NOT。

以下是他的真值表：

| A | B | $A \leftrightarrow B$ |
| -------- | -------- | -------- |
| 0 | 0 | 1 |
| 1 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 1 | 1 |

電路符號就變這樣：

![image](https://hackmd.io/_uploads/HkmjSeYTge.png)

Image Source：[設計CMOS邏輯：XOR，XNOR和變速箱門](https://www.ic-components.tw/blog/designing-cmos-logic-xor,xnor,and-transmission-gates.jsp)

## 布林代數式定律（Theorems / Laws）

1. 同一律（Identity Law）：
    - $A + 0 = A$
    - $A \cdot 1 = A$
2. 交換律（Commutative Law）：
    - $A \cdot B = B \cdot A$
    - $A + B = B + A$
3. 結合律（Associative Law）：
    - $(A \cdot B) \cdot C = A \cdot (B \cdot C)$
    - $(A + B) + C = A + (B + C)$
4. 分配律（Distributive Law）：
    - $A \cdot (B + C) = (A \cdot B) + (A \cdot C)$
5. 反轉律（Inversion Law）：
    - 註：經過兩次 NOT 還是自己。
    - $\overline{\overline{A}} = A$
6. 補數律（Complement Law）：
    - $A + \overline{A} = 1$
    - $A \cdot \overline{A} = 0$
7. 冪等律（Idempotent Law）：
    - $A + A = A$
    - $A \cdot A = A$
8. 笛摩根定理（De Morgan's Laws）：
    - $\overline{A \cdot B} = \overline{A} + \overline{B}$
    - $\overline{A + B} = \overline{A} \cdot \overline{B}$

學這要幹嘛？可以簡化布林代數式，也更進一步去改善、精簡電路設計，降低開發成本。

---

補充說明：XOR 定律，基本上與布林代數式定律差不多，但些許地方有差別。

1. 自反律（Self-Inverse Law）：
    - $A \oplus A = 0$
2. 交換律（Commutative Law）：
    - $A \oplus B = B \oplus A$
3. 結合律（Associative Law）：
    - $A \oplus B \oplus C = A \oplus (B \oplus C) = (A \oplus B) \oplus C$
4. 同一律（Identity Law）：
    - $A \oplus 0 = A$

註：XOR 在密碼學領域有相當的用處，透過這些定律可以進行加密解密的動作。

### 簡易證明笛摩根定理（De Morgan's Laws）

最簡單的方式就是使用真值表證明。

第一定理： $\overline{A \cdot B} = \overline{A} + \overline{B}$

| $A$  | $B$  | $A \cdot B$ | $\overline{A \cdot B}$ | $\overline{A}$ | $\overline{B}$ | $\overline{A} + \overline{B}$ |
| ---- | ---- | ----------- | ---------------------- | -------------- | -------------- | --- |
| 0 | 0 | 0 | 1 | 1 | 1 | 1 |
| 0 | 1 | 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 0 | 0 | 0 | 0 |

第二定理： $\overline{A + B} = \overline{A} \cdot \overline{B}$

| $A$  | $B$  | $A + B$ | $\overline{A + B}$ | $\overline{A}$ | $\overline{B}$ | $\overline{A} \cdot \overline{B}$ |
| ---- | ---- | ----------- | ---------------------- | -------------- | -------------- | --- |
| 0 | 0 | 0 | 1 | 1 | 1 | 1 |
| 0 | 1 | 1 | 0 | 1 | 0 | 0 |
| 1 | 0 | 1 | 0 | 0 | 1 | 0 |
| 1 | 1 | 1 | 0 | 0 | 0 | 0 |

### 利用布林代數式定律簡化邏輯電路

e.g. 1 畫出 $Y = AB + B +C$ 的邏輯電路圖。

首先要來簡化電路，之後才好畫圖。先看 $AB + B$ ，這邊可以用分配律化簡成 $B(A + 1)$ ，而 $A + 1$ 是 1，因此 $B(A + 1) = B$ 。

再將得出的結果代回去原式 $Y = B + C$ ，就可得到簡化結果了。

以下是這個範例的邏輯電路圖畫法（畫的稍醜不好意思）：

![image](https://hackmd.io/_uploads/Sk2_-zFTxg.png)

e.g. 2 簡化電路 $F = A \cdot (A + \overline{A})$ 。

根據補數律的 $A + \overline{A} = 1$ ，可簡化成 $F = A \cdot 1$ ，最終結果就是 $F = A$ 。

e.g. 3 畫出 $G = \overline{A + B} \cdot \overline{C}$ 的邏輯電路圖。

遇到這種題目一定要先簡化，首先 $\overline{A + B}$ 的部分用到笛摩根定理，可得到 $\overline{A} \cdot \overline{B}$ 。最後代回去原式即得 $G = \overline{A} \cdot \overline{B} \cdot \overline{C}$ 。

而以下是該範例的邏輯電路圖畫法：

![image](https://hackmd.io/_uploads/HyXRrztple.png)

也可以畫成這樣：

![image](https://hackmd.io/_uploads/ryGpUfKagg.png)

由於篇幅原因，故到此為止，下一節將繼續學習什麼是 Product of Sum、Sum of Product、Adder、Full-Adder、Half-Adder 等等。

## 總結

### 一、布林代數（Boolean Algebra）

布林代數是數學的分支，用於處理**真**（1）與**假**（0）的邏輯運算。

三種基本運算：

1. AND（ $\cdot$ ）：所有輸入為 1，輸出才為 1。
2. OR（ $+$ ）：只要有一個輸入為 1，輸出為 1。
3. NOT（ $\overline{}$ ）：將輸入反轉，0→1、1→0。

所有的邏輯閘都可以用 AND、OR、NOT 這些邏輯閘所組成。

### 二、真值表（Truth Table）

真值表列出所有輸入組合的輸出結果。

若輸入數為 $n$ ，則有 $2^n$ 種輸出組合。

以下是 AND、OR、NOT 個別的真值表：

AND（ $A \cdot B$ ）：

| A | B | $A \cdot B$ |
| -------- | -------- | -------- |
| 0 | 0 | 0 |
| 1 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 1 | 1 |

OR（ $A + B$ ）：

| A | B | $A + B$ |
| -------- | -------- | -------- |
| 0 | 0 | 0 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 1 | 1 |

NOT（ $\overline{A}$ ）：

| A | $\overline{A}$ |
| -------- | -------- |
| 0 | 1 |
| 1 | 0 |

### 三、邏輯電路與布林代數的對應

邏輯電路可直接轉換成布林代數式，反之亦然：

- $AND \rightarrow Y = A \cdot B$
- $OR \rightarrow Y = A + B$
- $NOT \rightarrow Y = \overline{A}$

### 四、進階邏輯運算

| 運算   | 符號 | 定義      |
| ---- | -- | ------- |
| XOR  | ⊕  | 兩輸入不同為真 |
| NAND | ↓  | AND 輸出後面加上 NOT |
| NOR  | ↑  | OR 輸出後面加上 NOT  |
| XNOR | ↔  | 兩輸入相同為真 |

### 五、布林代數基本定律（Laws of Boolean Algebra）

1. 同一律（Identity Law）：
    - $A + 0 = A$
    - $A \cdot 1 = A$
2. 交換律（Commutative Law）：
    - $A \cdot B = B \cdot A$
    - $A + B = B + A$
3. 結合律（Associative Law）：
    - $(A \cdot B) \cdot C = A \cdot (B \cdot C)$
    - $(A + B) + C = A + (B + C)$
4. 分配律（Distributive Law）：
    - $A \cdot (B + C) = (A \cdot B) + (A \cdot C)$
5. 反轉律（Inversion Law）：
    - 註：經過兩次 NOT 還是自己。
    - $\overline{\overline{A}} = A$
6. 補數律（Complement Law）：
    - $A + \overline{A} = 1$
    - $A \cdot \overline{A} = 0$
7. 冪等律（Idempotent Law）：
    - $A + A = A$
    - $A \cdot A = A$
8. 笛摩根定理（De Morgan's Laws）：
    - $\overline{A \cdot B} = \overline{A} + \overline{B}$
    - $\overline{A + B} = \overline{A} \cdot \overline{B}$

### 六、補充 XOR 定律（XOR Laws）

1. 自反律（Self-Inverse Law）：
    - $A \oplus A = 0$
2. 交換律（Commutative Law）：
    - $A \oplus B = B \oplus A$
3. 結合律（Associative Law）：
    - $A \oplus B \oplus C = A \oplus (B \oplus C) = (A \oplus B) \oplus C$
4. 同一律（Identity Law）：
    - $A \oplus 0 = A$

### 七、笛摩根定理證明

透過列出各輸入組合可驗證兩條定理的等價性，也就是用真值表去證明即可。

## 參考資料

[Boolean Algebra - GeeksforGeeks](https://www.geeksforgeeks.org/digital-logic/boolean-algebra/)

[Logic Circuit: AND Circuit | 臺灣東芝電子零組件股份有限公司 | 台灣](https://toshiba.semicon-storage.com/tw/semiconductor/knowledge/e-learning/micro-intro/chapter1/logic-circuit-and-circuit.html)

[XOR Gate | Tutorial with examples, truth table,and downloadable assets – Hacky Labs](https://hackylabs.com/blogs/engineering/xor-gate?srsltid=AfmBOorjY5IqpeWkgtIHvw-90vIxWhsrN89eybFBys5UmVP6lLRs3oHS&shpxid=c08ddd86-897d-4a1b-9941-e1eb224acd63)

[設計CMOS邏輯：XOR，XNOR和變速箱門](https://www.ic-components.tw/blog/designing-cmos-logic-xor,xnor,and-transmission-gates.jsp)

[真值表 - 維基百科，自由的百科全書](https://zh.wikipedia.org/zh-tw/%E7%9C%9F%E5%80%BC%E8%A1%A8)

[布林代數的基本運算原則-知識百科-三民輔考](https://www.3people.com.tw/%E7%9F%A5%E8%AD%98/%E5%B8%83%E6%9E%97%E4%BB%A3%E6%95%B8%E7%9A%84%E5%9F%BA%E6%9C%AC%E9%81%8B%E7%AE%97%E5%8E%9F%E5%89%87/%E5%B0%B1%E6%A5%AD%E8%80%83%E8%A9%A6-%E5%8F%B0%E5%8C%97%E6%8D%B7%E9%81%8B%E5%85%AC%E5%8F%B8/269a6725-a529-4ad3-99cb-72df9d9bee31)

[Chapter2-數位邏輯-Digital Logical | PinJin's Blog](https://pingjing0628.github.io/2021/04/01/Chapter2-%E6%95%B8%E4%BD%8D%E9%82%8F%E8%BC%AF-Digital-Logical/)

[互斥或閘 - 維基百科，自由的百科全書](https://zh.wikipedia.org/zh-tw/%E5%BC%82%E6%88%96%E9%97%A8)

[3. 布林代數與邏輯閘 - HackMD](https://hackmd.io/@siniu-thesis/DLD-VHDL-kl/https%3A%2F%2Fhackmd.io%2F%40siniu-thesis%2FDLD-VHDL-kl_03)

[利用 XOR 對資料加密的原理淺談 - johnny860726的創作 - 巴哈姆特](https://home.gamer.com.tw/artwork.php?sn=2949476)

