欢迎来到布尔代数的世界!
你好!布尔代数听起来可能很复杂,但它却是计算机科学中最基础也最优雅的部分之一。为什么这么说呢?因为它构成了计算机内部每一个数字电路的数学基石——从 CPU 到存储芯片,无一例外。
本章将带你学习真/假判断(即 1 和 0)运行的规则(即“代数”)。掌握这些规则,你就能简化复杂的逻辑电路,从而让计算机运行得更快、体积更小、效率更高。你可以把它看作是数字设计的“语法”!
3.7.7 逻辑规则:布尔代数
布尔代数是由 19 世纪的乔治·布尔(George Boole)创立的系统。与处理数值的标准代数不同,布尔代数仅处理两个值:
- 真 (T) 或 1 (高电平)
- 假 (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. 交换律(顺序不重要)
这意味着你可以随意调换 AND 或 OR 运算符两侧的变量顺序。
- OR 交换律: \( A + B = B + A \)
- AND 交换律: \( A \cdot B = B \cdot A \)
2. 结合律(分组不重要)
当你有三个或更多变量通过相同的运算符连接时(全为 AND 或全为 OR),分组方式不会改变结果。
- OR 结合律: \( A + (B + C) = (A + B) + C \)
- AND 结合律: \( A \cdot (B \cdot C) = (A \cdot B) \cdot C \)
3. 分配律(扩散传播)
分配律展示了 AND 运算符如何分配到 OR 运算符上(类似于标准代数中乘法对加法的分配)。
- AND 对 OR 的分配律: \( A \cdot (B + C) = (A \cdot B) + (A \cdot C) \)
定律要点总结: 交换律和结合律让你能够重新排列项,分配律则让你能够展开或因式分解表达式。
布尔恒等式(简化的规则)
这些恒等式是处理和简化布尔表达式的关键工具。它们本质上是逻辑真值表的快捷方式。简化表达式意味着减少变量和运算符的数量,这直接转化为最终电路设计中更少、更廉价、更快速的逻辑门。
基本恒等规则:
- 双重否定: 两次 NOT 操作相互抵消。
\( \overline{\bar{A}} = A \) - 幂等律(重复无关紧要): 如果你对一个变量进行自身的 AND 或 OR 运算,结果仍为该变量本身。
\( A \cdot A = A \)
\( A + A = A \)
(如果你把开关拨到 ON,然后立刻又拨一次 ON,它依然是 ON。) - 互补律:
一个变量与它的反变量进行 AND 运算总是 0(假)。
\( A \cdot \bar{A} = 0 \)
一个变量与它的反变量进行 OR 运算总是 1(真)。
\( A + \bar{A} = 1 \)
涉及 0 和 1 的规则:
这些规则展示了当输入与常数 0(假)或 1(真)结合时的表现。
- 与常数的 AND 运算:
\( A \cdot 0 = 0 \) (任何数与 0 做 AND 运算结果均为 0。如果其中一个条件必须为假,那么整体就为假。)
\( A \cdot 1 = A \) (任何数与 1 做 AND 运算结果为其本身。1 不会改变结果。) - 与常数的 OR 运算:
\( A + 0 = A \) (任何数与 0 做 OR 运算结果为其本身。0 不会改变结果。)
\( A + 1 = 1 \) (任何数与 1 做 OR 运算结果均为 1。如果其中一个条件必须为真,那么整体就为真。)
高级恒等规则:
- 吸收律: 这些规则允许你“吸收”冗余变量。
\( A \cdot (A + B) = A \)
\( A + (A \cdot B) = A \)
(如果你已经保证 A 为真,那么再去检查 A AND B 是否为真就没有意义了,A 本身就足够了。) - 不太常见但必须掌握的吸收律:
\( A + (\bar{A} \cdot B) = A + B \)
\( A \cdot (\bar{A} + B) = A \cdot B \)
如果一开始觉得棘手也不用担心! 关键在于练习。每当你看到 \( A + 1 \) 或 \( A \cdot \bar{A} \) 这样的组合时,你应该能立刻识别出它们分别简化为 1 或 0。
德·摩根定律:最强大的工具
德·摩根定律提供了对复杂表达式进行取反(NOT)的规则。它们对于简化涉及 NAND 和 NOR 门(本质上是 NOT-AND 和 NOT-OR)的电路至关重要。
当你对整个括号表达式应用 NOT 运算符(即在顶部加一条长横线)时,你必须:
- 对每个变量分别取反(NOT)。
- 改变运算符(AND 变为 OR,OR 变为 AND)。
德·摩根定律 1(对 OR 取反)
对两个变量的 OR 结果取反,等同于对每个变量分别取反后进行 AND 运算。
\[ \overline{A + B} = \bar{A} \cdot \bar{B} \]
(一个 NOR 门等同于 NOT A AND NOT B 的电路布局。)
德·摩根定律 2(对 AND 取反)
对两个变量的 AND 结果取反,等同于对每个变量分别取反后进行 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} \)
这展示了如何通过简单的电路 \( \bar{A} + \bar{B} \) 来实现原本看起来复杂的电路 \( \overline{A \cdot B} + \bar{A} \),从而节省组件和成本!
本章要点:
布尔代数提供了在数学上简化复杂逻辑电路所需的规则(恒等式和定律)。我们的目标始终是将表达式化简至最简形式,从而在计算机硬件中减少所需的物理组件(逻辑门)。