2013-02-27 48 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。所以会导致一个未定义的行为。

相关问题