位运算
判断一个数奇偶性
(x&1)==0
判断两个数值是否相等
(x^y)==0
同样一批数,只有1个数是奇数次。求这个数
public static void oddTimeNum(int[] array){
int oddNum=array[0];
for (int i=1;i<array.length;i++){
oddNum^=array[i];
}
System.out.print(oddNum);
}
把2进制整型数去除高位的1,只保留最右侧的1
2进制类型 N= 00101100 -> 00000100 只保留最右侧的1
N = 00101100
~N = 11010011
~N+1 = 11010100
N&(~N+1)= 00101100
& 11010100
-> 00000100
int num=N & (~N+1);