很简单,真的。我想否定以 2 的补码表示的整数,为此,我需要首先翻转字节中的所有位。我知道使用 XOR 很简单——只需使用 XOR 和位掩码 11111111。但是没有 XOR 怎么办?(即只是 AND 和 OR)。哦,在我使用的这种蹩脚的汇编语言中,NOT 不存在。所以那里也没有骰子。
问问题
1867 次
2 回答
4
你不能用 AND 和 OR 门建立一个 NOT 门。
正如我被要求解释的那样,这里的格式很好。假设您有任意数量的AND
和OR
门。你的输入是A
, 0 和 1。你有六种可能性,因为你可以从三个信号中做出三对(选择一个被遗漏的信号)和两个门。现在:
Operation Result
A AND A A
A AND 1 A
A AND 0 0
A OR A A
A OR 1 1
A OR 0 A
因此,在您将任何信号输入第一个门之后,您的新信号集仍然只是 A、0 和 1。因此,这些门和信号的任何组合只会得到 A、0 和 1。如果您的最终输出是A,那么这意味着对于 A 的两个值,它不会等于!A,如果您的最终输出为 0,那么 A = 0 是这样一个值,您的最终值与 1 不同!A 相同。
编辑:那单调的评论也是正确的!让我在这里重复一遍:如果您将 AND / OR 的任何输入从 0 更改为 1,则输出不会减少。因此,如果您声称要构建一个 NOT 门,那么我会将您的输入从 0 更改为 1 ,您的输出也不能减少,但它应该 - 这是一个矛盾。
于 2011-05-29T01:40:27.443 回答
0
行得通吗(foo & ~bar) | (~foo & bar)
?
编辑:哦,NOT 不存在。没看到那部分!
于 2011-05-29T01:40:03.933 回答