翻转位的位掩码..没有XOR



真的很简单。我想否定一个用2的补码表示的整数,为此,我需要首先翻转字节中的所有位。我知道XOR很简单——只需使用XOR和位掩码11111111。但是如果没有XOR呢?(即只有AND和OR)。哦,在我使用的这种糟糕的汇编语言中,NOT是不存在的。所以那里也没有骰子。

不能用AND和OR门构建NOT门。

正如我被要求解释的那样,这里的格式很好。假设您有任意数量的ANDOR门。您的输入是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也是如此。

编辑:单调的评论也是正确的!让我重复一遍:如果将AND/OR的任何输入从0更改为1,则输出不会减少。因此,如果你声称要构建一个NOT门,那么我会把你的输入从0改为1,你的输出也不能减少,但应该减少——这是矛盾的。

(foo & ~bar) | (~foo & bar)能起作用吗?

编辑:哦,不存在。没看到那个部分!

最新更新