异或运算可以理解为无进位的相加
-
0 ^ N = N
-
N ^ N = 0
-
异或运算满足交换性和结合性
-
同样一批数异或后的结果与运算顺序无关
-
不用额外变量的交换写法
-
a = a ^ b
-
b = a ^ b
-
a = b ^ a
-
前提是a 和 b在内存里是独立的区域,可以是一样的值,如果是同一个区域会出问题
-
在数组中作,就要保证不是同一个下标做交换,否则这个位置就会变成0
-
一般来说不用这样写,面试中会出现异或知识点
-
- 提取出一个数最右侧的一个1: x = n & (~n+1)