If statement 我需要帮助来否定这个逻辑

If statement 我需要帮助来否定这个逻辑,if-statement,boolean-logic,If Statement,Boolean Logic,(previous=4 | | previous=5)和¤t=2的对立面是什么 我知道我可以把它写成!((previous=4 | | previous=5)和¤t=2),但现在它变成了一种东西,在我找到答案之前,它会一直追踪我。如何在括号内分配负数 这是我的想法,但我觉得不对 !((先前=4 | |先前=5)和当前=2 !(previous=4 | | previous=5)| | current!=2 (previous!=4&&previous!=5)| | cur

(previous=4 | | previous=5)和¤t=2的对立面是什么

我知道我可以把它写成
!((previous=4 | | previous=5)和¤t=2)
,但现在它变成了一种东西,在我找到答案之前,它会一直追踪我。如何在括号内分配负数

这是我的想法,但我觉得不对

!((先前=4 | |先前=5)和当前=2

!(previous=4 | | previous=5)| | current!=2


(previous!=4&&previous!=5)| | current!=2

你可以用这个等式得到答案。
!(a&&b)=!a | |!b

因此,一步一步:

!((previous = 4 || previous = 5) && current = 2)
!(previous = 4 || previous = 5) || !(current = 2)
(previous != 4 && previous != 5) || current != 2

DeMorgan定律指出,当你取一个表达式的补码时(也就是说,当你否定它时),你可以简单地交换所有的OR和and,并否定每个项,以得到期望的结果

比如说

!(A && B) = !A || !B

!(A || B) = !A && !B

!(A && !B) = !A || B
因此,运用这两条简单的规则,

!((previous = 4 || previous = 5) && current = 2) 
=
!(previous = 4 || previous = 5) || current != 2
=
(previous != 4 && previous != 5) || current != 2
(由于一行太长,在多行上被拆分)

注意上面,因为我们有一个表达式作为其中一个术语,所以我们递归地应用了DeMorgan定律(确切地说是两次)

还有一些例子吗

!(A > B || A + B == 0) = A <= B && A + B != 0

!(A >= 2 && A < 8) = A < 2 || A >= 8
!(A>B | A+B==0)=A=2&&A<8)=A<2 | A>=8

没错。想想看。在原始版本中,
previous
必须是4或5,否则整个内容都是错误的。因此,相反,只要
previous
不是4或5,那么
current
的值是多少就无关紧要了。我想如果我把它写成
current!=2 | |(上一个!=4和上一个!=5)
。这样它读作
当当前值不是2时,这是正确的,但如果当前值是2,则前一个值不能是4,前一个值不能是5)
!((上一个=4 | |上一个=5)和¤t=2)
转到
!(先前=4 | |先前=5)| |当前!=2
转到
previous!=4和上一个!=5 | |当前!=2
。。。给定操作顺序,结果大致相同。j.i.h.-事实上,AND确实优先于OR,因此在这种特殊情况下,括号变得多余。然而,我认为保留它们的完整性有助于澄清这一程序。相反,如果我们对表达式
((A==4&&B==5)| C==2)
求反,括号就很重要了。我不得不再次检查,因为您跳过了中间步骤,但最终结果是正确的。啊,我看到了混淆。我将添加额外的步骤:)