布尔代数是由乔治·布尔 (1815-1864) 在他于 1854 年发表的论文《思想规律的研究,其上建立了逻辑和概率的数学理论》中创造的。它当时几乎没有应用,但最终科学家和工程师意识到他的系统可以用于创建高效的计算机逻辑。布尔系统有两个状态:**真** (T) 或 **假** (F)。这可以用多种不同的方式表示,例如开或关、1 或 0、是或否等等。这些状态由三种基本运算来操作,称为逻辑运算符:**与**、**或** 和 **非**。这些运算符接收某些输入,并根据预定的结果表产生输出。例如,与运算符接收两个(或更多)输入,并且仅当两个(或所有)输入都为“开”时才返回“开”结果。
- 在这些表中,T 表示“真”或“是”或 1(在电子学中),并且
- F 表示“假”或“否”或 0(在电子学中)。
- 例如,与表的第 1 行说,如果 A 为 F 且 B 为 F,则结果也为 F。这也常被称为如果 A 为 0 且 B 也为 0,则 A 与 B = 0 乘以 0 = 0
- 同样,在与表的底部,1 乘以 1 等于 1。
- 查看或表,使用加号代替乘号:0 加 0 等于 0,其中 0 为 F,1 为 T。只有 0 和 1 存在,因此如果加法结果大于 1,则将其更改为 1。
- 第三张表显示了否定:无论是什么,将其更改为另一个;0 更改为 1,1 更改为 0。
真值表
与
A |
B |
|
F |
F |
F |
F |
T |
F |
T |
F |
F |
T |
T |
T |
|
或
A |
B |
|
F |
F |
F |
F |
T |
T |
T |
F |
T |
T |
T |
T |
|
非
A |
|
F |
T |
T |
F |
|
这些简单的运算符很好,因为它们允许我们创建非常简单的逻辑电路:如果用户投入一枚 25 美分的硬币并且按下可乐按钮,则掉落一瓶可乐。
但是,有一些方法可以将这些表达式组合起来,以创建更复杂但有用的数字电路。通过对相同输入使用多个运算符,可以创建更复杂的输出。类似于 A 与 B 或 C 这样的表达式将具有以下真值表。
A 与 B 或 C
A |
B |
C |
X |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
这个真值表遵循规则,如果 A 和 B 为真,或 C 为真,则 X 为真
练习:遍历表中的每种情况,并使用上述语句进行检查。
与用 或 表示,即 A 与 B 为 或 .
或用 或 表示,即 A 或 B 为 和 .
NOT 用 或 表示,即 NOT A 为 或 .
如果将这三个运算符组合起来,就可以创建 NOR 和 NAND。因此,A NOR B 为 或 。NAND 为 或 。其他符号也是有效的,在数学和工程中会产生许多不同的组合。还没有达成普遍的标准。但是,大多数来源会明确说明所使用的特定符号。
布尔代数就像普通代数一样,也有一些规则。这些规则是结合律、分配律、交换律和德摩根定律。结合律、交换律和分配律只适用于 AND 和 OR 运算符。在普通代数中,一些定律可能看起来微不足道,但在其他代数中则不然。
结合律是代数的性质,即项的求值顺序无关紧要。
或者
- 维基百科:结合律
分配律是指运算符可以应用于括号内的项的性质。
或者
- 维基百科:分配律
交换律是指运算符的应用顺序无关紧要的性质。
或者
- 维基百科:交换律
德摩根定律是“非”或否定运算符不可分配这一事实的结果。
或者
需要注意的是
或者
这可以看作是“与”运算优先级更高,或者“与”和“或”运算之间不满足结合律,或者是对分配律的错误应用。
另一种看待这个问题的方法是使用第二种符号时,可能会应用我们对普通代数规则的理解。显然,可以将“或”运算看作加法,将“与”运算看作乘法。如果这是高中代数,我们永远不会犯这种错误。
所有这些定律导致了许多用于简化布尔代数的规则。
或者
简化以下表达式。
或者
对于数字 1,使用规则 7,我们得到。
或者
这恰好是规则 5,所以答案为零。在数字 2 中,我们可以提取 A。给出
或者
括号内的表达式是规则 8。所以答案是 A。
维基百科:布尔逻辑