是||而且!运算符足以使每个可能的逻辑表达式?

时间:2015-10-15 17:55:52

标签: logic logical-operators

逻辑表达式( a && b ) ab都有布尔值)可以写成!(!a || !b),例如。这不意味着&&是"不必要的"?这是否意味着只能使用||! 所有逻辑表达式?

6 个答案:

答案 0 :(得分:425)

是的,正如其他答案所指出的那样,由||!组成的运算符集合为functionally complete。这是一个建设性的证明,展示如何使用它们来表达布尔变量AB之间的所有16个可能的逻辑连接词:

请注意,NAND和NOR本身在功能上都是完整的(可以使用上面相同的方法证明),因此如果要验证一组运算符在功能上是否完整,那么足以表明您可以表达NAND或NOR与它。

以下是显示上面列出的每个连接词的Venn diagrams的图表:

enter image description here

[source]

答案 1 :(得分:125)

您所描述的是functional completeness

这描述了一组足以“表达所有可能的真值表”的逻辑运算符。您的Java运算符集{||!}就足够了;它对应于集合{∨,¬},它列在“最小功能完整的运算符集”部分下。

所有真值表的集合表示所有可能的4个布尔值集合,这些值可以是2个布尔值之间的操作的结果。因为布尔值有2个可能的值,所以有2个 4 或16个可能的真值表。

A B | 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
----+------------------------------------------------
T T | T  T  T  T  T  T  T  T  F  F  F  F  F  F  F  F
T F | T  T  T  T  F  F  F  F  T  T  T  T  F  F  F  F
F T | T  T  F  F  T  T  F  F  T  T  F  F  T  T  F  F 
F F | T  F  T  F  T  F  T  F  T  F  T  F  T  F  T  F

这是真值表编号(0-15),产生它的||!组合以及描述的表格。

Table  |  Operation(s)                    | Description
-------+----------------------------------+-------------
  0    | A || !A                          | TRUE
  1    | A || B                           | OR
  2    | A || !B                          | B IMPLIES A
  3    | A                                | A
  4    | !A || B                          | A IMPLIES B
  5    | B                                | B
  6    | !(!A || !B) || !(A || B)         | XNOR (equals)
  7    | !(!A || !B)                      | AND
  8    | !A || !B                         | NAND
  9    | !(A || !B) || !(!A || B)         | XOR
 10    | !B                               | NOT B
 11    | !(!A || B)                       | NOT A IMPLIES B
 12    | !A                               | NOT A
 13    | !(A || !B)                       | NOT B IMPLIES A
 14    | !(A || B)                        | NOR
 15    | !(A || !A)                       | FALSE

还有很多其他功能完备的集合,包括一个元素集{NAND}和{NOR},它们在Java中没有相应的单个运算符。

答案 2 :(得分:80)

是。

All logic gates can be made from NOR gates.

由于NOR门可以由NOT和OR组成,因此结果如下。

答案 3 :(得分:64)

如果可以,请花点时间阅读DeMorgan's Laws

您可以在阅读中找到答案,并参考逻辑证明。

但基本上,答案是肯定的。

编辑:为了明确,我的观点是,可以从AND表达式逻辑推断OR表达式,反之亦然。对于逻辑等价和推理,还有更多的定律,但我认为这是最合适的。

编辑2 :这是一个通过真值表的证明,显示了以下表达式的逻辑等价。

德摩根法律:!(!A || !B) -> A && B

 _____________________________________________________
| A | B | !A  | !B  | !A || !B | !(!A || !B) | A && B | 
-------------------------------------------------------
| 0 | 0 |  1  |  1  |    1     |      0      |   0    | 
-------------------------------------------------------
| 0 | 1 |  1  |  0  |    1     |      0      |   0    |
-------------------------------------------------------
| 1 | 0 |  0  |  1  |    1     |      0      |   0    |
-------------------------------------------------------
| 1 | 1 |  0  |  0  |    0     |      1      |   1    |
_______________________________________________________

答案 4 :(得分:11)

NANDNOR是通用的,可用于在任何地方构建您想要的任何逻辑操作;其他运算符以编程语言提供,以便于编写和生成可读代码。

此外,所有需要在电路中硬连线的逻辑运算也是使用NAND或NOR专用IC开发的。

答案 5 :(得分:10)

是的,根据布尔代数,任何布尔函数都可以表示为minterms的总和或maxterms的乘积,称为规范的正规形式。没有理由不将这种逻辑应用于计算机科学中使用的相同算子。

https://en.wikipedia.org/wiki/Canonical_normal_form