非常简单,真的。我想否定一个以2的补码表示的整数,为此,我需要先翻转字节中的所有位。我知道XOR很简单 - 只需使用XOR和位掩码11111111.但是如果没有XOR呢? (即只是AND和OR)。哦,在我使用的这种糟糕的汇编语言中,并不存在。所以也没有骰子。
答案 0 :(得分: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来说是相同的。
编辑:单调评论也是正确的!我在此重复一遍:如果将AND / OR的任何输入从0更改为1,则输出不会减少。因此,如果你声称要构建一个NOT门,那么我会将你的输入从0改为1,你的输出也不会减少,但它应该 - 这是一个矛盾。
答案 1 :(得分:0)
(foo & ~bar) | (~foo & bar)
能做到这一点吗?
编辑:哦,不存在。没看到那部分!