布尔否定
Boolean negation
我的一个考题是:
! ( ! ( a != b) && ( b > 7 ) )
选项:
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)
一开始我以为是D。这是不正确的,我知道为什么了。我不明白逻辑否定运算符如何反转 && 和大于 than/less。我相信我已经将范围缩小到前两个。是否有任何实例 > 会更改为 <= ?
答案应该是B。这是因为先求(a != b)旁边的否定,然后你把外面的否定分配给整个命题。
根据德摩根定律,&& 将切换为 ||。同样,!= 变为 ==,> 变为 <=.
!(!(a != b) && (b > 7))
!((a == b) && (b > 7))
(a != b) || (b <= 7)
Is there any instance > would change to <= ?
答:每次都否定。
考虑 x > 1
。对此的否定显然是x <= 1
。如果您只是将其否定为 x < 1
那么这两种情况都不会涵盖 x == 1
情况。
也就是说,给定的布尔值 ! ( ! ( a != b) && ( b > 7 ) )
可以分解如下:
给定:
! ( !(a != b) && (b > 7))
否定a != b
:
! ((a == b) && (b > 7))
分发 !
:
!(a == b) || !(b > 7)
否定a==b
:
(a != b) || !(b > 7)
否定b>7
:
(a != b) || (b <= 7)
因此,答案是 B。
! ( ! ( a != b) && ( b > 7 ) )
= ! ( (a = b) && (b > 7))
= (a != b) || (b <= 7)
答案是 B。
理解这一点:
! ( !( a != b) && ( b > 7 ) )
让我们把它分成几部分。
部分虚拟:(a!=b)
第 X 部分:!dummy
Y 部分:(b>7)
现在 !X = dummy 的双重否定 => dummy => (a!=b)
!Y = !(b>7) => b 不应大于 7 => b 应小于或等于 7 => (b<=7)
现在剩下的问题是 && 如何变成 ||
所以原来的问题是:!( X && Y ) => 不应该是 (X and Y) => 它应该是 X 的负数或者它应该是 Y 的负数,因为如果不是 X 它是~X,条件(X 和 Y)变为假,因此 !(X 和 Y)变为真,因此达到原始条件。同样对于 Y.
先应用内括号Logical NOT (!)
:
!(!(a != b) && (b > 7)) becomes !((a == b) && (b > 7))
使用 De Morgan's Law
我们将 operators
反转为对应的
我们将 >
更改为 <=
因为 >
operator
不包括 7 本身或任何更少的东西,因此 <=
是唯一的满足那个条件。
现在外!
:
当查看 truth tables
(上图)时,您会注意到 Logical AND (&&)
和 Logical OR (||)
在比较 2 个不同的 boolean expressions
时有相反的结果(即 true false , false true), 因此当我们应用 !
时,我们用 ||
反转 &&
。最后,我们需要再次将 ==
切换为 !=
。
全部起来,这就产生了
((a != b) || (b <= 7))
我的一个考题是:
! ( ! ( a != b) && ( b > 7 ) )
选项:
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)
一开始我以为是D。这是不正确的,我知道为什么了。我不明白逻辑否定运算符如何反转 && 和大于 than/less。我相信我已经将范围缩小到前两个。是否有任何实例 > 会更改为 <= ?
答案应该是B。这是因为先求(a != b)旁边的否定,然后你把外面的否定分配给整个命题。
根据德摩根定律,&& 将切换为 ||。同样,!= 变为 ==,> 变为 <=.
!(!(a != b) && (b > 7))
!((a == b) && (b > 7))
(a != b) || (b <= 7)
Is there any instance > would change to <= ?
答:每次都否定。
考虑 x > 1
。对此的否定显然是x <= 1
。如果您只是将其否定为 x < 1
那么这两种情况都不会涵盖 x == 1
情况。
也就是说,给定的布尔值 ! ( ! ( a != b) && ( b > 7 ) )
可以分解如下:
给定:
! ( !(a != b) && (b > 7))
否定
a != b
:! ((a == b) && (b > 7))
分发
!
:!(a == b) || !(b > 7)
否定
a==b
:(a != b) || !(b > 7)
否定
b>7
:(a != b) || (b <= 7)
因此,答案是 B。
! ( ! ( a != b) && ( b > 7 ) )
= ! ( (a = b) && (b > 7))
= (a != b) || (b <= 7)
答案是 B。 理解这一点: ! ( !( a != b) && ( b > 7 ) )
让我们把它分成几部分。 部分虚拟:(a!=b) 第 X 部分:!dummy Y 部分:(b>7)
现在 !X = dummy 的双重否定 => dummy => (a!=b)
!Y = !(b>7) => b 不应大于 7 => b 应小于或等于 7 => (b<=7)
现在剩下的问题是 && 如何变成 ||
所以原来的问题是:!( X && Y ) => 不应该是 (X and Y) => 它应该是 X 的负数或者它应该是 Y 的负数,因为如果不是 X 它是~X,条件(X 和 Y)变为假,因此 !(X 和 Y)变为真,因此达到原始条件。同样对于 Y.
先应用内括号Logical NOT (!)
:
!(!(a != b) && (b > 7)) becomes !((a == b) && (b > 7))
使用 De Morgan's Law
我们将 operators
反转为对应的
我们将 >
更改为 <=
因为 >
operator
不包括 7 本身或任何更少的东西,因此 <=
是唯一的满足那个条件。
现在外!
:
当查看 truth tables
(上图)时,您会注意到 Logical AND (&&)
和 Logical OR (||)
在比较 2 个不同的 boolean expressions
时有相反的结果(即 true false , false true), 因此当我们应用 !
时,我们用 ||
反转 &&
。最后,我们需要再次将 ==
切换为 !=
。
全部起来,这就产生了
((a != b) || (b <= 7))