Logic 如何将逻辑语句转换为它们的对立面?
我有一个场景,根据多个变量值检查是否隐藏某些内容。对于其中一些语句,如果它们的计算结果为true,那么我将跳过显示内容(默认情况下显示)。但是,我需要重新编写我的语句,以便如果它们的计算结果为true,那么我将显示一些内容(默认情况下隐藏) 例如:Logic 如何将逻辑语句转换为它们的对立面?,logic,Logic,我有一个场景,根据多个变量值检查是否隐藏某些内容。对于其中一些语句,如果它们的计算结果为true,那么我将跳过显示内容(默认情况下显示)。但是,我需要重新编写我的语句,以便如果它们的计算结果为true,那么我将显示一些内容(默认情况下隐藏) 例如: If X !== 1 && Y !==1 If X === 3 or Y === 3 例如: If X !== 1 && Y !==1 If X === 3 or Y === 3 如果这两个例子都是真的
If X !== 1 && Y !==1
If X === 3 or Y === 3
例如:
If X !== 1 && Y !==1
If X === 3 or Y === 3
如果这两个例子都是真的,那么我会跳过(隐藏)一些东西
我需要翻转代码中写的条件,这样表达式就是它们的对立面。我不能只计算原始表达式,然后交换最终的true/false结果。
会
及
逻辑上是对立的吗?我怎样才能重新编写这些表达式,使它们每次都得到相反的结果
我不能这么做!(如果X!==1&&Y!==1)在这种情况下。德摩根定律是否适用于我正在尝试做的事情?我正在考虑将所有“===”翻转到“!===”(反之亦然)并翻转所有“and/OR”,这样我就可以得到我想要的结果。这似乎适用于我尝试过的案例,但我不确定它是否适用于“所有”案例。谢谢大家! 如果目标是否定整个条件,最简单的方法就是将整个表达式包装在
中代码>
例如,以下条件子句:
If X !== 1 && Y !== 1
可以通过将其替换为以下内容来翻转:
If !(X !== 1 && Y !== 1)
现在,这是完全正确的,但你可能觉得它相当丑陋。这就是可以应用DeMorgan定律的地方,用一种等价但可能语法更简单的形式重写表达式
DeMorgan的法律规定:
!(x&y)==!x | |!y
,并且
!(x | | y)==!x&&!y
李>
因此,我们可以拿上面难看(但正确翻转)的条件子句为例:
If !(X !== 1 && Y !== 1)
并使用上面列出的第一条DeMorgan定律重写它(完全不改变其含义):
然后通过简单的推理(!(a!==b)
相当于!(!(a==b))
相当于a==b
):
这是(也是)原始子句的翻转版本If X!==1&&Y!==1
如果我按照你的要求去做
If X !== 1 && Y !==1
是:
这与:
if !(X !== 1 && Y !==1)
下面是如何思考的:在你的例子中,X和Y都不能等于1才是真的;因此,如果X或Y等于1,则该语句为false。现在把最后一句话转换成布尔值
当反转逻辑语句时,反转参数和逻辑条件:“and”变成“or”,反之亦然。是的,这正是DeMorgan定律。
If X !== 1 && Y !==1
if (X == 1 || Y == 1)
if !(X !== 1 && Y !==1)