似乎與給定的一個整數n正常整數(按位操作)及其掩碼K(一個字節:1111 1111爲負數和0000 0000爲正的)number xor K - K = number + K xor K,爲什麼?
(n^K) - K = (n + K)^K
並且這通常用來以K作爲掩碼計算數字n的絕對值。我的問題是:爲什麼上述表達式起作用?爲什麼這兩個術語是相同的?
似乎與給定的一個整數n正常整數(按位操作)及其掩碼K(一個字節:1111 1111爲負數和0000 0000爲正的)number xor K - K = number + K xor K,爲什麼?
(n^K) - K = (n + K)^K
並且這通常用來以K作爲掩碼計算數字n的絕對值。我的問題是:爲什麼上述表達式起作用?爲什麼這兩個術語是相同的?
您只對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。
我認爲這不是事實。對於
(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
是錯的!
存在整數溢出k = ~0
和n + k
。所以會導致一個未定義的行爲。
什麼是異常整數? – 2013-02-27 14:04:14
什麼是n和K? – 2013-02-27 14:04:42
對於n = K = 1似乎不正確...... – 2013-02-27 14:06:01