我正在讀一本關於「位擺弄」,出現下面的公式:X-Y = X +¬y+ 1個問題
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」由亨利·沃倫。)
我正在讀一本關於「位擺弄」,出現下面的公式:X-Y = X +¬y+ 1個問題
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」由亨利·沃倫。)
您只有四位系統!最終結果左邊的額外1不能存在。它應該是:
x = 0100
y = 0010
~y = 1101
~y + 1 = 1110
x + 1110 = 0010
其他位溢出,而不是你的結果的一部分。您可能需要閱讀two's complement arithmetic。
非常感謝:)好解釋。感謝所有其他人。 – 0x90 2010-08-10 22:15:16
您攜帶額外位。在真正的電腦中,如果你溢出這個詞,這個位就會消失。 (實際上它被保存在進位標誌中)。
假設數字被限制爲4位,那麼第五個1
將被截斷,使您留下0010
。
這是關於溢出。你只有四位,所以它不是10010,但是0010
只需添加到答案,2的補系統:
~x + 1 = -x
說x = 2
。在4位中,即0010
。
~x = 1101
~x + 1 = 1110
而且1110
是-2
注意,這與其說是「位擺弄」,因爲它是[「減法」的定義](http://en.wikipedia.org/wiki/兩%27s_complement) – 2010-08-10 22:48:17