是|| 和! 运营商足以使每一个可能的逻辑expression?

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

是的,正如其他答案指出的那样,这组操作符由||! function完整 。 这是一个build设性的certificate,展示了如何使用它们来表示布尔variablesAB之间的所有十六种可能的逻辑连接词:

  • 真 : A || !A A || !A
  • 一个NAND B : !A || !B !A || !B
  • B意味着A : !B || A !B || A
  • A意味着B : !A || B !A || B
  • A或B : A || B A || B
  • 不是B : !B
  • 不是A !A
  • 异或B : !(!A || B) || !(A || !B) !(!A || B) || !(A || !B)
  • XNOR B : !(!A || !B) || !(A || B) !(!A || !B) || !(A || B)
  • A : A
  • B : B
  • A NOR B : !(A || B)
  • A并不意味着B : !(!A || B)
  • B并不意味着A : !(!B || A)
  • A和B : !(!A || !B)
  • 假 : !(A || !A)

请注意,NAND和NOR本身在function上是完整的(可以用上面的相同的方法certificate),所以如果你想validation一组操作符在function上是完整的,那就足以certificate你可以expressionNAND或者NOR用它。

下面是一张图,显示了上面列出的每个连接词的维恩图 :

在这里输入图像说明

[ 来源 ]

你所描述的是function的完整性

这描述了一组足以“expression所有可能的真值表”的逻辑运算符。 您的Java运算符集{, , ! }, 足够了; 它对应于在“最小function完整运算符集”一节中列出的集合{∨,¬}。

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

 AB | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ----+------------------------------------------------ TT | TTTTTTTTFFFFFFFF TF | TTTTFFFFTTTTFFFF FT | TTFFTTFFTTFFTTFFFF | TFTFTFTFTFTFTFTF 

这里是一个真值表(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 

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

是。

所有的逻辑门都可以由NOR门构成。

由于一个或非门可以由一个“非”和“或”来构成,结果如下。

如果可以的话,花时间阅读德摩根法律 。

你会在阅读中find答案,并参考逻辑certificate。

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

编辑 :为了明确,我的观点是,可以从逻辑上推断从一个ANDexpression式的ORexpression式,反之亦然。 逻辑上的等价和推理也有更多的规律,但是我认为这是最合适的。


编辑2 :这是通过真值表显示以下expression式的逻辑等价的certificate。

德摩根定律: !(!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 |
 _______________________________________________________

NAND和NOR是通用的,它们可以用来在任何地方build立任何你想要的逻辑操作。 其他操作员都可以使用编程语言,以便编写和编写可读代码。

而且所有需要在电路中硬连线的逻辑操作也是使用NAND或NOR唯一的IC开发的。

是的,根据布尔代数,任何布尔函数都可以表示为minterms的一个或者一个maxterms乘积的和,这就是所谓的典范法线forms 。 没有理由不把这种逻辑应用到计算机科学中使用的相同算子上。

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