2013-02-27 52 views
-4

似乎與給定的一個整數n正常整數(按位操作)及其掩碼K(一個字節:1111 1111爲負數和0000 0000爲正的)number xor K - K = number + K xor K,爲什麼?

(n^K) - K = (n + K)^K 

並且這通常用來以K作爲掩碼計算數字n的絕對值。我的問題是:爲什麼上述表達式起作用?爲什麼這兩個術語是相同的?

+1

什麼是異常整數? – 2013-02-27 14:04:14

+0

什麼是n和K? – 2013-02-27 14:04:42

+4

對於n = K = 1似乎不正確...... – 2013-02-27 14:06:01

回答

4

您只對k:0和-1的2個值感興趣。

對於k = 0:(n^0)-0=(n+0)^0,好的。

對於k = -1,因爲n^-1==~n,因此重寫爲~n+1=~(n-1),嘗試在兩邊添加n-1並注意n +〜n == -1。

1

我認爲這不是事實。對於

(n^k) - k = (n + k)^k => 
((n^k) - k)^k) = (n + k)^k ^k => 
(n^k)^k - k^k = n + k => ### WRONG 
n^k - 0 = n + k => 
n^k = n + k => 
n & k = 0 

這是公式的前提條件。

編輯

我犯了一個錯誤,異或不與減法配電臺。 (a - b)^c = a^c - b^c是錯的!

0

存在整數溢出k = ~0n + k。所以會導致一個未定義的行爲。

相關問題