歡迎來到布林代數的世界!
你好!布林代數(Boolean Algebra)聽起來可能很深奧,但它其實是計算機科學中最基礎且優美的部分之一。為什麼呢?因為它是電腦內每一個數位電路的數學骨幹,從 CPU 到記憶體晶片,全都仰賴它。
本章將教你關於「真/假」(或 1/0)陳述如何運作的規則(即「代數」)。掌握這些規則,你就能簡化複雜的邏輯電路,讓電腦運行得更快、更小巧、更有效率。不妨把它想像成學習數位設計的文法!
3.7.7 邏輯規則:布林代數
布林代數是由 George Boole 在 19 世紀開發的一套系統。不同於處理數字的標準代數,布林代數僅處理兩個數值:
- 真 (True, T) 或 1 (高電壓)
- 假 (False, F) 或 0 (低電壓)
關鍵布林運算子(基本組件)
我們主要使用三種運算子,它們通常直接對應於基本的邏輯閘:
- NOT(反相/補數):以變數上方的橫線 (\( \bar{A} \)) 或撇號 (A') 表示。將數值翻轉(1 變 0,0 變 1)。
- AND(邏輯乘法/合取):以點號 (\( A \cdot B \)) 或直接將變數寫在一起 (AB) 表示。只有當兩個輸入皆為 1 時,輸出才為 1。
- OR(邏輯加法/析取):以加號 (\( A + B \)) 表示。只要至少有一個輸入為 1,輸出即為 1。
優先順序(誰先執行?)
就像算術中的四則運算優先次序 (BODMAS/PEMDAS) 一樣,布林運算式也必須遵循特定的順序來執行。如果不遵守,簡化出來的結果就會出錯!
優先順序(由高至低)為:
- NOT (\( \bar{A} \)) - 最高
- AND (\( A \cdot B \))
- OR (\( A + B \)) - 最低
快速複習:
如果你看到 \( \bar{A} + B \cdot C \),你需要先算 NOT A,接著算 B AND C,最後再將結果進行 OR 運算。
布林基本定律
這三條定律規範了我們如何在不改變整體輸出情況下,重組布林運算式中的變數。它們能幫助我們透過移動項來簡化運算式。
1. 交換律 (Commutativity)(順序不重要)
這意味著你可以交換 AND 或 OR 運算子兩側的變數順序。
- OR 交換律: \( A + B = B + A \)
- AND 交換律: \( A \cdot B = B \cdot A \)
2. 結合律 (Associativity)(分組不重要)
當你有三個或更多由相同運算子(全部是 AND 或全部是 OR)連接的變數時,如何進行分組都不會改變結果。
- OR 結合律: \( A + (B + C) = (A + B) + C \)
- AND 結合律: \( A \cdot (B \cdot C) = (A \cdot B) \cdot C \)
3. 分配律 (Distributivity)(分佈特性)
分配律顯示了 AND 運算子如何分佈在 OR 運算子上(類似於標準代數中乘法對加法的分配)。
- AND 對 OR 的分配律: \( A \cdot (B + C) = (A \cdot B) + (A \cdot C) \)
定律要點總結:交換律和結合律讓你能夠重排變數,分配律則讓你能夠展開或分解運算式。
布林恆等式(簡化的規則)
這些恆等式是你操作與簡化布林運算式的核心工具。它們本質上就是邏輯真值表的捷徑。簡化運算式意味著減少變數和運算子的數量,這直接轉化為在最終電路設計中使用更少、更便宜或更快速的邏輯閘。
基本恆等規則:
- 雙重否定 (Double Negation):NOT NOT 運算會互相抵消。
\( \overline{\bar{A}} = A \) - 冪等律 (Idempotence)(重複不重要):如果將一個變數與自身進行 AND 或 OR 運算,結果仍是該變數本身。
\( A \cdot A = A \)
\( A + A = A \)
(如果你把開關打開,然後立刻又打開一次,結果還是打開的。) - 互補律 (Complementary Rules):
變數與其反相進行 AND 運算永遠為 0 (False)。
\( A \cdot \bar{A} = 0 \)
變數與其反相進行 OR 運算永遠為 1 (True)。
\( A + \bar{A} = 1 \)
涉及 0 和 1 的規則:
這些規則顯示了當輸入與常數 0 (False) 或 1 (True) 結合時的行為。
- 與 0 和 1 的 AND 運算:
\( A \cdot 0 = 0 \) (任何值 AND 0 都是 0。如果其中一個條件必須為 False,結果一定是 False。)
\( A \cdot 1 = A \) (任何值 AND 1 都是其自身。1 不會改變結果。) - 與 0 和 1 的 OR 運算:
\( A + 0 = A \) (任何值 OR 0 都是其自身。0 不會改變結果。)
\( A + 1 = 1 \) (任何值 OR 1 都是 1。如果其中一個條件必須為 True,結果一定是 True。)
進階恆等規則:
- 吸收律 (Absorption Laws):這些規則允許你「吸收」冗餘的變數。
\( A \cdot (A + B) = A \)
\( A + (A \cdot B) = A \)
(如果你已經保證 A 為 True,那麼再去檢查 A AND B 是否為 True 是毫無意義的,因為 A 就足夠了。) - 較少見的吸收律(但考試仍需掌握):
\( A + (\bar{A} \cdot B) = A + B \)
\( A \cdot (\bar{A} + B) = A \cdot B \)
如果剛開始覺得這很棘手,別擔心!關鍵在於練習。每當你看到像 \( A + 1 \) 或 \( A \cdot \bar{A} \) 這樣的組合時,你應該要能自動聯想到它們分別可以簡化為 1 或 0。
狄摩根定律 (De Morgan’s Laws):最強大的工具
狄摩根定律提供了處理複雜運算式否定(NOT)的規則。這對於簡化涉及 NAND 和 NOR 閘(本質上是 NOT-AND 和 NOT-OR)的電路至關重要。
當你對整個括號運算式加上 NOT 運算(上方有完整的橫線)時,你必須:
- 對每個變數單獨進行 NOT 運算。
- 改變運算子(AND 變 OR,OR 變 AND)。
狄摩根定律 1(否定一個 OR 運算)
對兩個變數的 OR 結果進行否定,等同於對每個變數進行 NOT 運算後再進行 AND 運算。
\[ \overline{A + B} = \bar{A} \cdot \bar{B} \]
(一個 NOR 閘等同於一個「NOT A」AND「NOT B」的排列。)
狄摩根定律 2(否定一個 AND 運算)
對兩個變數的 AND 結果進行否定,等同於對每個變數進行 NOT 運算後再進行 OR 運算。
\[ \overline{A \cdot B} = \bar{A} + \bar{B} \]
(一個 NAND 閘等同於一個「NOT A」OR「NOT B」的排列。)
簡化步驟範例
讓我們簡化運算式:\( Y = \overline{A \cdot B} + \bar{A} \)
- 對第一項應用狄摩根定律:
我們將 \( \overline{A \cdot B} \) 替換為 \( \bar{A} + \bar{B} \)。
運算式變成:\( Y = (\bar{A} + \bar{B}) + \bar{A} \) - 移除多餘的括號(結合律):
\( Y = \bar{A} + \bar{B} + \bar{A} \) - 重排項(交換律):
\( Y = \bar{A} + \bar{A} + \bar{B} \) - 應用冪等律 (\( A + A = A \)):
\( \bar{A} + \bar{A} \) 簡化為 \( \bar{A} \)。
最終的簡化運算式為:\( Y = \bar{A} + \bar{B} \)
這展示了如何將複雜的電路 \( \overline{A \cdot B} + \bar{A} \) 轉化為僅使用簡單得多的電路 \( \bar{A} + \bar{B} \),從而節省組件和成本!
本章要點總結:
布林代數提供了在數學上簡化複雜邏輯電路所需的規則(恆等式和定律)。我們的目標永遠是將運算式化簡到最簡單的形式,以減少電腦硬體中實際的物理組件(邏輯閘)。