异或运算符
A^B: 0异或任何数=任何数; 1异或任何数=任何数取反; a^a=0;
0^0 = 0;
1^0 = 1;
0^1 = 1;
1^1 = 0;
(1) 使某些特定的位翻转
例如让10100001的第2位和第3位翻转,则可以将该数与00000110进行按位异或运算: 10100001^00000110 = 10100111;
(2)实现两个整数的交换
第一步:a=a^b。此时a=a^b;
第二步:b=a^b。因为上步a=a^b,所以此时b=a^b=(a^b)^b=a^(b^b)=a^0=a;
第三步:a=a^b。因为上步a=a^b,b=a,所以此时a=a^b=(a^b)^a=(b^a)^a=b^(a^a)=b^0=b。
(3)快速判断两个值是否相等
return ((a ^ b) == 0)