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

时间:2011-05-29 01:35:30

标签: xor bitmask

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

2 个答案:

答案 0 :(得分:4)

你不能用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,你的输出也不会减少,但它应该 - 这是一个矛盾。

答案 1 :(得分:0)

(foo & ~bar) | (~foo & bar)能做到这一点吗?

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