为什么 ! && 等于 ||?
Why does ! && equal ||?
我最近遇到了一个问题,我们要找到一个等效的布尔表达式
(x && !y)
给定一组选择。在浏览一些示例时,我的教授指出
!(!x && y)
不是正确答案,因为 ! distributes 使这个表达式等价于 (x || !y)
,所以 !将 && 更改为 ||。相反,正确答案是 !(!x || y)
。
我试着玩弄真相 tables for && 和 ||我不明白为什么这是真的。否定 && truth table 的结果不会给出等于 || 的结果。否定 && 的输出将产生
0 && 0 --> 0 !-> 1
0 && 1 --> 0 !-> 1
1 && 0 --> 0 !-> 1
1 && 1 --> 1 !-> 0
我看得出上面的答案是对的,只是不明白为什么。我在这里错过了什么?
德摩根定律 https://en.wikipedia.org/wiki/De_Morgan%27s_laws 是相关的。
他们说:
I) !(a && b) = (!a) || (!b)
II) !(a || b) = (!a) && (!b)
其中否定 和 意味着 or 两个否定同时否定 or 意味着 和两个否定。
让我们在 II
:
中用 (!x) 替换 a,用 y 替换 b
II) !((!x) || y) = (!(!x)) && (!y)
这给出
II) !(!x || y) = x && (!y)
表明需要正确的等价物是 !(!x || y)
。
我最近遇到了一个问题,我们要找到一个等效的布尔表达式
(x && !y)
给定一组选择。在浏览一些示例时,我的教授指出
!(!x && y)
不是正确答案,因为 ! distributes 使这个表达式等价于 (x || !y)
,所以 !将 && 更改为 ||。相反,正确答案是 !(!x || y)
。
我试着玩弄真相 tables for && 和 ||我不明白为什么这是真的。否定 && truth table 的结果不会给出等于 || 的结果。否定 && 的输出将产生
0 && 0 --> 0 !-> 1
0 && 1 --> 0 !-> 1
1 && 0 --> 0 !-> 1
1 && 1 --> 1 !-> 0
我看得出上面的答案是对的,只是不明白为什么。我在这里错过了什么?
德摩根定律 https://en.wikipedia.org/wiki/De_Morgan%27s_laws 是相关的。
他们说:
I) !(a && b) = (!a) || (!b)
II) !(a || b) = (!a) && (!b)
其中否定 和 意味着 or 两个否定同时否定 or 意味着 和两个否定。
让我们在 II
:
II) !((!x) || y) = (!(!x)) && (!y)
这给出
II) !(!x || y) = x && (!y)
表明需要正确的等价物是 !(!x || y)
。