布尔否定

Tan*_*ner 2 boolean-logic

我的一个考题是:

! ( ! ( a != b)  &&  ( b > 7 ) )
Run Code Online (Sandbox Code Playgroud)

选择:

a) (a != b) || (b < 7)
b) (a != b) || (b <= 7)
c) (a == b) || (b <= 7)
d) (a != b) && (b <= 7)
e) (a == b) && (b > 7)
Run Code Online (Sandbox Code Playgroud)

最初,我以为会是 D。这是不正确的,我明白为什么了。我不明白逻辑否定运算符如何反转 && 和大于/小于。我相信我已经将范围缩小到前两个。是否有任何实例 > 会更改为 <= ?

Rod*_*eas 5

是否有任何实例 > 会更改为 <= ?

答案:每次你否定它。

考虑x > 1。对此的否定是明显的x <= 1。如果你简单地否定它,x < 1那么两种情况都不涵盖这种x == 1情况。


话虽如此,给定的布尔值! ( ! ( a != b) && ( b > 7 ) )可以分解如下:

  1. 鉴于:

    ! ( !(a != b) && (b > 7))

  2. 否定a != b

    ! ((a == b) && (b > 7))

  3. 分发!

    !(a == b) || !(b > 7)

  4. 否定a==b

    (a != b) || !(b > 7)

  5. 否定b>7

    (a != b) || (b <= 7)

因此,答案是 B。