按位运算符:仅使用 & 和 ~ 得到 ^

Bitwise Operators: Using only & and ~ to get ^

这几天我一直被教授给的奖金卡住了:

我尝试了很多不同的组合,也尝试写出运算符^的逻辑,但一直没有成功。任何提示或帮助将不胜感激!

XOR 运算符实际上可以写成这两者的组合,我将分两步进行:

A NAND B = NOT(A AND B)

A XOR B = (A NAND (A NAND B)) NAND (B NAND (A NAND B))

就像之前关于数学的描述:

https://math.stackexchange.com/questions/38473/is-xor-a-combination-of-and-and-not-operators

首先,假设您可以使用 &|~ 运算符。你能这样实现 ^ 吗?

接下来,看看你能不能找到一种方法来完全用 &~ 来表达 |

最后,将这些想法结合起来。

祝你好运!

您可以尝试为 XORANDOR[=42= 绘制真值表]

a b  a^b
0 0   0
0 1   1
1 0   1
1 1   0

a b  a|b
0 0   0
0 1   1
1 0   1
1 1   1

a b  a&b
0 0   0
0 1   0
1 0   0
1 1   1

接下来了解如何使用 |& 来构建这个

a|b 正确填写前三行,a&b 填写另一行。如果我们否定它,它可以用来掩盖想要的线!所以我们可以将 xor 表述为:

(a or b) but not when (a b)

布尔代数中没有 but 所以它变成了 and 这导致了这个:

(a|b)&~(a&b)

编辑: 指出我答错问题了,用DeMorgan定律来构建or

~(~a & ~b)

给出的答案是

~(~a&~b)&~(a&b)