转自:http://blog.csdn.net/sinat_33107885/article/details/52020840
一、交换两个整数的值而不必用第三个参数
a = 9;
b = 11;
a=a^b; 1001^1011=0010
b=b^a; 1011^0010=1001
a=a^b; 0010^1001=1011
a = 11;
b = 9;
二、奇偶判断
^a操作就是将a中的每一位按位逐一进行异或,例如a=4’b1010,则b=1^0^1^0=0,由此可以判断a中为1的位数是奇数还是偶数,是一个便捷的操作。
三、配对性
设a为任意非负偶数,b=a+1为比a大1的正奇数,则必有a^1=b.b^1=a;
可用于处理两两配对问题。
四、运算具有不进位加法性
如1+1=0,0+0=0,1+0=1;
五、交换律,结合律,对任何数x,有x^x=0,x^0=x;
六、自反性
A^B^B=A^0=A
这是一个最重要的性质,对于给定的A,运用同样的运算因子B,两次运算后仍得到A本身,可用于数据加密传输等。
leetcode上第268. Missing Number,就是此题应用。
X=1^2^…^lost^…^n(包含丢失的那个数,设为lost)
Y=1^2^…^n(不包含lost)
则X=Y^lost,则X^Y=Y^Y^lost=0^lost=lost,大功告成。
先把理解的写上,不理解的还需加功
先加上链接:http://www.cnblogs.com/danh/archive/2010/12/24/1915810.html