void Find_data(int *arr,int len, int *data1, int *data2)
{
assert(arr);
unsigned int ret = 0;
for (int i = 0; i <len; i++)
{
ret ^= arr[i];
}
int tmp1 = 1;
int tmp2 = 1;
int count = 0;
while (1)
{
if ((ret&tmp1) != 0)
{
break;
}
tmp1 <<= 1;
}
*data1 = *data2 = 0;
for (int i = 0; i < len; i++)
{
if (arr[i] & tmp1)
{
*data1 ^= arr[i];
}
else
{
*data2 ^= arr[i];
}
}
}
int main()
{
int arr[] = { 1, 1, 3, 3, 4, 4, 5, 5, 6, 6, 24, 19, 19, 36, 7, 7 };
int len = sizeof(arr) / sizeof(arr[0]);
int data1, data2;
Find_data(arr,len,&data1, &data2);
printf("diff data : %d, %d\n", data1, data2);
system("pause");
return 0;
}