位运算提取二进制数最右边的1
异或的性质:
- 与0异或结果是本身,与自己异或是0
- 有交换律和结合律
找出数组中两个奇数个数的数,其他数个数为偶数
int rightOne = eor & (~ero+1);//是为了找出a、b某个不同的位,这个位上
(cur & rightOne)==1;//应该取0或者rightOne,取1区分不了a、b。假设a是在最右边不同位置取0,那(a & rightOne) == 0,(b & rightOne) == rightOne
位运算提取二进制数最右边的1
异或的性质:
找出数组中两个奇数个数的数,其他数个数为偶数
int rightOne = eor & (~ero+1);//是为了找出a、b某个不同的位,这个位上
(cur & rightOne)==1;//应该取0或者rightOne,取1区分不了a、b。假设a是在最右边不同位置取0,那(a & rightOne) == 0,(b & rightOne) == rightOne