public static void main(String[] args) {
/**
* 异或性质
* A^0=A
* A^A=0
* (A^B)^C = A^(B^C)
*/
int[] arr = {1, 1, 2, 2, 3, 4, 5, 5, 6, 6};
int num = arr[0], bitPos = 1;
for (int i = 1; i < arr.length; i++) {
num = num ^ arr[i];
}
System.out.println(num);
// 找到异或结果中右侧第一位为1的位置
while ((num & 1) == 0) {
bitPos++;
num >>= 1;
}
int num1 = 0, num2 = 0;
for (int i = 0; i < arr.length; i++) {
if (((arr[i] >> bitPos) & 1) == 1) {
num1 ^= arr[i];
} else {
num2 ^= arr[i];
}
}
System.out.println(num1);
System.out.println(num2);
}
07-28
1631
09-03
155