欢迎来到布尔代数的世界!

你好!布尔代数听起来可能很复杂,但它却是计算机科学中最基础也最优雅的部分之一。为什么这么说呢?因为它构成了计算机内部每一个数字电路的数学基石——从 CPU 到存储芯片,无一例外。

本章将带你学习真/假判断(即 1 和 0)运行的规则(即“代数”)。掌握这些规则,你就能简化复杂的逻辑电路,从而让计算机运行得更快、体积更小、效率更高。你可以把它看作是数字设计的“语法”!

3.7.7 逻辑规则:布尔代数

布尔代数是由 19 世纪的乔治·布尔(George Boole)创立的系统。与处理数值的标准代数不同,布尔代数仅处理两个值:

  • 真 (T) 或 1 (高电平)
  • 假 (F) 或 0 (低电平)
在计算机体系结构的语境下,这些值代表了在 CPU 及其他组件内部的逻辑门(如 AND、OR、NOT 等)中传输的信号。

关键布尔运算符(构建基础)

我们主要使用三个运算符,它们通常直接对应基本的逻辑门:

  • NOT(非/取反):由变量上的横线(\( \bar{A} \))或撇号(A')表示。作用是将值翻转(1 变为 0,0 变为 1)。
  • AND(与/合取):由圆点(\( A \cdot B \))表示,或直接将变量写在一起(AB)。仅当两个输入均为 1 时,输出才为 1。
  • OR(或/析取):由加号(\( A + B \))表示。只要至少有一个输入为 1,输出即为 1。

优先级(谁先算?)

就像算术中的运算顺序(BODMAS/PEMDAS)一样,布尔表达式必须按特定的顺序计算。如果不遵守,你的简化结果就会出错!
优先级从高到低依次为:

  1. NOT (\( \bar{A} \)) - 最高
  2. AND (\( A \cdot B \))
  3. 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 \)
类比:无论你是先穿左袜再穿右袜(L+R),还是先穿右袜再穿左袜(R+L),结果(两只袜子都穿上了)是一样的。

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) \)
你知道吗?与标准代数不同,在布尔代数中,OR 也可以分配到 AND 上,尽管这个特性在基础考试的简化中不太常用:\( A + (B \cdot C) = (A + B) \cdot (A + 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 运算符(即在顶部加一条长横线)时,你必须:

  1. 对每个变量分别取反(NOT)。
  2. 改变运算符(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} \)

  1. 对第一项应用德·摩根定律:
    将 \( \overline{A \cdot B} \) 替换为 \( \bar{A} + \bar{B} \)。
    表达式变为:\( Y = (\bar{A} + \bar{B}) + \bar{A} \)
  2. 移除多余括号(结合律):
    \( Y = \bar{A} + \bar{B} + \bar{A} \)
  3. 重排项(交换律):
    \( Y = \bar{A} + \bar{A} + \bar{B} \)
  4. 应用幂等律(\( A + A = A \)):
    \( \bar{A} + \bar{A} \) 简化为 \( \bar{A} \)。
    最终简化后的表达式为:\( Y = \bar{A} + \bar{B} \)

这展示了如何通过简单的电路 \( \bar{A} + \bar{B} \) 来实现原本看起来复杂的电路 \( \overline{A \cdot B} + \bar{A} \),从而节省组件和成本!

本章要点:
布尔代数提供了在数学上简化复杂逻辑电路所需的规则(恒等式和定律)。我们的目标始终是将表达式化简至最简形式,从而在计算机硬件中减少所需的物理组件(逻辑门)。