Home
探索 Uedu
學生控制台
註冊會員/登入
研究知情同意中心
教師控制台
課程設定
支援與訊息
Uptime 數據

UeduGPTs

--

Jupyters

2

UG26 CISOSE26
臺北 AQI 51 · 臺中 AQI 32 · 臺南 AQI 29 · 高雄 AQI 27

AI 回覆桌面通知

AI 助教回覆完成時顯示桌面通知

聊天訊息通知

同學在討論區發送訊息時通知

聲音通知

每當有新通知時播放提示音

邏輯閘與布林代數

邏輯閘與布林代數:用 0 與 1 打造的數位世界

從 AND、OR、NOT 三個小開關,到會算術的電腦核心

邏輯閘在做什麼

打開任何一台電腦、手機、計算機,把它層層拆開、再拆開,最後你會看到一群只懂兩件事的小開關:有電(1)沒電(0)。數位世界裡沒有「大概」「有點亮」這種模糊地帶,所有資訊都被壓縮成這兩個值。而邏輯閘(logic gate) 就是把這些 0 與 1 拿來做運算的最小單位——它像一個只認得「真」與「假」的守門員,根據輸入決定要不要放行。

最基本的三位主角是 AND(且)OR(或)NOT(非)。用日常語言就能直接體會:

  • AND:要進機房,需要「門禁卡 而且 指紋」兩者都對,缺一不可。
  • OR:要觸發警報,「煙霧感測 溫度過高」任一成立就響。
  • NOT:把「開」變「關」、把「是」變「否」,做相反的事。

整個數位文明,從加法器、記憶體到 CPU,都是用這幾種小積木堆出來的。

邏輯閘與布林代數概念示意圖

真值表:把規則攤開來看

要精準描述一個邏輯閘的行為,最直接的工具是真值表(truth table):把所有可能的輸入組合與對應輸出全部列出來。設輸入為 $A$、$B$,輸出為 $Y$。

AND 閘(記作 $Y = A \cdot B$,或直接寫 $AB$):

$A$ $B$ $Y = A \cdot B$
0 0 0
0 1 0
1 0 0
1 1 1

只有「兩個都是 1」時輸出才為 1,這跟乘法很像(任何數乘以 0 都是 0)。

OR 閘(記作 $Y = A + B$):只要有一個是 1,輸出就是 1,唯有 $0+0$ 才得 0。NOT 閘(記作 $Y = \overline{A}$)只有一個輸入:$\overline{0}=1$、$\overline{1}=0$。

實務上還有兩個超好用的組合閘:NAND($\overline{A \cdot B}$,AND 之後取反)與 NOR($\overline{A + B}$)。它們之所以重要,是因為光用 NAND 一種閘就能組出所有其他邏輯——這個「萬能性」稍後在研究所段會深入。另一個常見的是 XOR(互斥或),記作 $A \oplus B$,兩輸入「不一樣」時才輸出 1,是加法進位運算的核心。

布林代數:邏輯的數學

把這些運算寫成符號、用代數規則化簡,就是 布林代數(Boolean algebra),由十九世紀數學家 George Boole 奠基。它的變數只能取 $0$ 或 $1$,運算只有「且」「或」「非」三種,卻自成一套嚴謹的代數系統。

幾條最常用的定律(這裡 $+$ 代表 OR、$\cdot$ 代表 AND):

$$ A + 0 = A, \qquad A \cdot 1 = A $$

$$ A + A = A, \qquad A \cdot A = A \quad (\text{冪等律}) $$

$$ A + \overline{A} = 1, \qquad A \cdot \overline{A} = 0 \quad (\text{互補律}) $$

最有名的則是 De Morgan 定律,它告訴你「取反」如何穿過 AND/OR:

$$ \overline{A \cdot B} = \overline{A} + \overline{B}, \qquad \overline{A + B} = \overline{A} \cdot \overline{B} $$

直覺上:「不是『兩者都對』」等於「至少一個不對」;「不是『至少一個對』」等於「兩者都不對」。這條定律是硬體工程師化簡電路、把 AND/OR 轉成全 NAND 的最重要武器。

動手算一題:化簡一個邏輯式

假設某個控制電路的輸出為

$$ Y = A \cdot B + A \cdot \overline{B} $$

它用了 2 個 AND 閘、1 個 NOT 閘、1 個 OR 閘,共 4 個閘。我們來化簡。

第一步,提出共同因子 $A$(分配律,跟一般代數一樣):

$$ Y = A \cdot (B + \overline{B}) $$

第二步,套互補律 $B + \overline{B} = 1$:

$$ Y = A \cdot 1 $$

第三步,套 $A \cdot 1 = A$

$$ Y = A $$

結果令人吃驚:原本 4 個閘的電路,輸出其實就等於 $A$ 本身,完全不需要 $B$!這代表可以直接拿掉所有閘、用一條導線取代。驗算:把 $B=0$ 與 $B=1$ 各代回原式,$A\cdot0+A\cdot1 = 0 + A = A$、$A\cdot1+A\cdot0 = A + 0 = A$,兩種情況都得 $A$,化簡正確。這正是布林代數的價值——更少的閘代表更省電、更便宜、更快。

用閘做加法:半加器

邏輯閘真正動人的地方,是它能「算數學」。考慮兩個 1 位元相加:$0+0=0$、$0+1=1$、$1+0=1$、$1+1=10$(二進位的 2,產生進位)。

我們需要兩個輸出:和(Sum)進位(Carry)。觀察真值表會發現:

$$ \text{Sum} = A \oplus B, \qquad \text{Carry} = A \cdot B $$

也就是一個 XOR 閘加一個 AND 閘,就構成了半加器(half adder)。把多個半加器與全加器串起來,就能做八位元、六十四位元的加法——你手機裡的整數運算,骨子裡就是成千上萬個這種閘的組合。從「兩個小開關」到「會算術的機器」,中間的橋梁正是邏輯閘與布林代數。

深入探討(研究所視角)

布林代數的真正威力,在於它是一套抽象代數結構而非僅僅是真值表的速記。形式上,布林代數是一個六元組 $(B, +, \cdot, \overline{\phantom{x}}, 0, 1)$,滿足交換律、結合律、雙向分配律、互補律與恆等律。最小的非平凡例子是兩元素布林代數 $\mathbb{B} = \{0,1\}$,但同樣的公理也描述集合的聯集/交集/補集——這說明邏輯與集合論共享同一個代數骨架。更深刻地,Stone 表示定理指出:任何布林代數都同構於某個拓撲空間上「既開又閉集合」所成的代數,把純代數對象與拓撲幾何對象一一對應起來。

在工程實務上,核心問題是邏輯極小化:給定一個真值表,如何用最少的閘實現它?任何函數都可寫成標準形式——積之和(SOP)和之積(POS)。例如最小項展開把函數寫成所有使輸出為 1 的輸入組合之 OR:

$$ Y = \sum_i m_i $$

但這通常不是最簡的。卡諾圖(Karnaugh map) 利用相鄰格只差一個變數的特性,以視覺方式合併項;其代數依據正是合併律 $A\cdot B + A\cdot\overline{B} = A$。對變數更多的情況,Quine–McCluskey 演算法提供可程式化的系統解法,但已知通用的邏輯極小化(尋找最小布林電路)屬於 NP-hard,因此實務 EDA 工具多採用啟發式(如 Espresso)。

函數完備性(functional completeness) 是另一個理論支柱:一組運算若能組出所有布林函數,即稱完備。$\{\text{AND}, \text{OR}, \text{NOT}\}$ 顯然完備;而由 De Morgan 定律可知 $\{\text{AND}, \text{NOT}\}$ 與 $\{\text{OR}, \text{NOT}\}$ 也各自完備。最驚人的是 NAND 與 NOR 各自單獨即可完備——例如用 NAND 實現 NOT 只需把兩輸入接在一起:$\overline{A\cdot A} = \overline{A}$,再由 NAND 串接做出 AND 與 OR。這即 Sheffer stroke 的結論,也是為何超大型積體電路(VLSI)常以單一 NAND/NOR 製程大量複製來簡化製造。

再往前延伸,布林函數的複雜度理論直通計算理論的核心:電路複雜度(circuit complexity)研究實現某函數所需的閘數與深度,與 $P$ vs. $NP$ 等開放問題密切相關;而 Shannon 在 1938 年指出開關電路與布林代數的對應,正式把這門十九世紀的純數學,變成了整個數位時代的奠基語言。

AI 共讀助教正在陪你讀:邏輯閘與布林代數:用 0 與 1 打造的數位世界
嗨!我是這篇文章的共讀助教,只根據〈邏輯閘與布林代數:用 0 與 1 打造的數位世界〉的內容回答。可以問我「解釋某段」「舉個例子」「出題考我」,或反白文中段落後點下方「解釋選取段落」。