(A XOR B) 和 (!A XOR !B) 不一样吗?

Is not(A XOR B) the same as (!A XOR !B)?

我想知道 !(A xor B) 是否等于 (!A xor !B)? 我正在努力理解这个问题背后的逻辑。

不,他们不是。

A xor B 等于 1 当且仅当 AB 之一是 1 但不是两者都是。因此 !(A xor B) 等于 1 当且仅当 AB 都相等。

而对于 (!A xor !B),您首先翻转位,然后执行 XOR。所以 (!A xor !B) = (A xor B).

这是第一个 table 的真相:

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

他们不相等。您可以查看以下 table 以获得进一步的解释。

+---+---+-------+--------+----+----+-------+
| 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'))