问题描述
我想知道 !(A xor B) 是否等于 (!A xor !B)? 我正在努力理解这个问题背后的逻辑。
解决方法
不,他们不是。
A xor B
等于 1
当且仅当 A
或 B
中的任何一个是 1
但不是两者都是。因此,!(A xor B)
等于 1
当且仅当 A
和 B
都相等。
而对于 (!A xor !B)
,您首先翻转位,然后进行 XOR。所以(!A xor !B) = (A xor B)
。
这是第一个的真值表:
A | B | A xor B | !(A xor B)
============================
0 | 0 | 0 | 1
0 | 1 | 1 | 0
1 | 0 | 1 | 0
1 | 1 | 0 | 1
对于第二个:
A | B | !A | !B | (!A xor !B)
=============================
0 | 0 | 1 | 1 | 0
0 | 1 | 1 | 0 | 1
1 | 0 | 0 | 1 | 1
1 | 1 | 0 | 0 | 0
,
如有疑问,请使用真值表。 A 和 B 可以是 1 或 0 所以:
A xor B:
0 1
1 0
! (A xor B)
1 0
0 1
! A xor ! B:
0 1
1 0
所以,答案是否定的。它们似乎与初始异或相同。
,一步一步地查看结果列,我们发现它们不会基于相同的输入产生相同的输出。
A | B | A XOR B | not(A XOR B) |
---|---|---|---|
0 | 0 | 0 | 1 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
A | B | !A | !B | (!A XOR !B) |
---|---|---|---|---|
0 | 0 | 1 | 1 | 0 |
0 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 1 |
1 | 1 | 0 | 0 | 0 |
它们不相等。您可以查看下表以获得进一步的解释。
+---+---+-------+--------+----+----+-------+
| A | B | (A^B) | !(A^B) | !A | !B | !A^!B |
+---+---+-------+--------+----+----+-------+
| 0 | 0 | 0 | 1 | 1 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 | 0 | 1 |
| 1 | 0 | 1 | 0 | 0 | 1 | 1 |
| 1 | 1 | 0 | 1 | 0 | 0 | 0 |
+---+---+-------+--------+----+----+-------+
编辑:计算 !(A^B)
而不使用 A、B、A' 和 B' 的 NOT 操作
XOR(A,B) = OR(AND(A,B'),AND(A',B))
将 DeMorgan 用于上述等式后:
NOT XOR(A,B) = AND(OR(A',B),OR(A,B'))