仅使用 XOR 的比较器

问题描述 投票:0回答:2

我想问如何制作一个2位比较器,仅使用异或门来检查数字是否相等

是否可以构建这样一个比较器?哦,是的,IT 应该是什么样子?

我尝试创建门:NOT、OR、AND 使用 XOR,但对我来说似乎不可能

bitwise-operators xor
2个回答
1
投票

不可能从异或门创建相等比较运算符。您有两个输入 - 让我们称它们为 A 和 B:您的 XOR 运算最终对 A 的多个副本和 B 的一定数量的副本进行操作。XOR 完成的顺序无关紧要,因为 XOR 运算是可交换的 。基本上,如果你有偶数个 A 副本,它们都会抵消并留下 false/0。 B 也是如此。因此,无论您如何排列 A 和 B 输入以及 XOR 门的副本,它都会归结为 A XOR 0(即 A)或 A XOR A(始终为 0)的等价物,并告诉您与 A)、A XOR B、B XOR B、B XOR 0 无关。

正如您所发现的,同样不可能生成 NOT、OR 或 AND 运算。


0
投票

我假设您可以使用

a XOR 1
==
NOT a
来提供更有用的答案。

然后你可以构建比较器:

a!=b
a XOR b

a==b
NOT a XOR b
(随意阅读)
1 XOR a XOR b

相同

其余的(

>
>=
)无法构建,因为如上所述,
XOR
是可交换的。这本质上意味着您无法区分
a XOR b
b XOR a
,这又意味着您无法说出是
a is greater than b
还是
b is greater than a

© www.soinside.com 2019 - 2024. All rights reserved.