x-y = x +¬y+ 1问题

时间:2010-08-10 22:04:43

标签: binary bit-manipulation

我目前正在阅读一本关于“小提琴”的书,并出现以下公式:

x-y = x+¬y+1

但这似乎不起作用。例如:

x = 0100  
y = 0010  
x-y = 0010  
¬y = 1101  
¬y+1 = 1110  
x+1110 = 10010  

但是10010 != 0010...

我在哪里犯了错误(如果有的话)?

(亨利·沃伦的这本书是“Hacker's Delight”。)

5 个答案:

答案 0 :(得分:23)

你只有一个四位系统!最终结果左侧的额外1不能存在。它应该是:

x  = 0100
y  = 0010
~y = 1101
~y + 1 = 1110
x + 1110 = 0010

另一位溢出,不属于您的结果。您可能需要阅读two's complement arithmetic

答案 1 :(得分:2)

你带着额外的一点。在真正的计算机上,如果你溢出这个词,那么这个位就会消失。 (实际上它会被保存在进位标志中。)。

答案 2 :(得分:2)

假设数字被限制为4位,那么第五个1将被截断,留下0010

答案 3 :(得分:1)

这都是关于溢出的。你只有四位,所以它不是10010,而是0010。

答案 4 :(得分:1)

只需在2的补充系统中添加答案:

~x + 1 = -x

x = 2。在4位中,即0010

~x = 1101
~x + 1 = 1110

1110是-2