OR和AND之间的区别?

时间:2012-03-02 13:56:17

标签: boolean-logic

我正在为WQL查询创建一个表达式,以便在没有该软件的Version1或Version2的机器上定位软件部署。

我提出了两个表达式,它们似乎都有相同的结果,并希望对你运行这个逻辑,看看这些表达式是否真的相同?如果是这样,我可能会去表达1。

  

表达式1:

     

将Software.version1部署到“Group1”AND中的机器IF机器IS   机器不是Software.version1 AND机器不是Software.version2

     

表达式2:

     

将Software.version1部署到“Group1”AND中的机器IF机器IS(   机器不是Software.version1或机器不是Software.version2)

我的大脑开始受伤了。

非常感谢

2 个答案:

答案 0 :(得分:2)

在表达式1中,所有三个条件必须为真(组1中的机器而不是版本1而不是版本2)。在表达式2中,两个条件必须为真:计算机在组1中而不是版本1或计算机是组1而不是版本2.

假设机器不能同时具有版本1和版本2,如果机器在组1中,则第二个表达式将始终为真。如果机器在组中,则第一个表达式将为真1并且既没有版本1也没有版本2.

从逻辑上讲,你有:

exp1 = g1 ∧ ~v1 ∧ ~v2

exp2 = g1 ∧ (~v1 ∨ ~v2)
     = g1 ∧ ~(v1 ∧ v2)   // by DeMorgan's theorem

所以答案是不,两个表达式不等同。如果你不明白为什么,请写出所有三个条件和两个表达式的真值表。

答案 1 :(得分:0)

我对langue不熟悉,但逻辑看起来非常简单。

如果我正确理解了这个问题,你想要:

  • (1,1) - > 1(既不是版本1也不是2)
  • (1,0) - > 0(是版本2)
  • (0,1) - > 0(版本1)
  • (0,0) - > 0(版本1和2)

这将通过表达式1来实现。

表达式2将返回:

  • (1,1) - > 1
  • (1,0) - > 1
  • (0,1) - > 1
  • (0,0) - > 0

我强烈建议你测试langue会帮助你做什么(我确定有某种打印bool功能),并且因为测试不多,所以真的,只测试所有三个或四个可能性,看看它是否会返回你想要的东西。