[英]Bitwise Operators: Using only & and ~ to get ^
我被教授给的奖金困住了几天:
我尝试了很多不同的组合,也尝试写出运算符^的逻辑,但一直没有解决。 任何提示或帮助将不胜感激!
XOR 运算符实际上可以写为这两者的组合,我将把它分为两步:
A 与非 B = 非(A 与 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
首先,假设你有每个&
, |
, 和~
运算符可供您使用。 你能这样实现^
吗?
接下来看看能不能找到表达方式|
纯粹就&
和~
。
最后,将这些想法结合在一起。
祝你好运!
您可以尝试为XOR 、 AND 、 and 、 OR绘制真值表
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或b)但不是当 (a和b)
在布尔代数中没有but所以它变成了and导致了这个:
(a|b)&~(a&b)
编辑:指出我回答了错误的问题,使用德摩根定律来构建或
~(~a & ~b)
给出的答案是
~(~a&~b)&~(a&b)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.