void check_num(int*arr, int sz,int*x,int*y)
{
*x = 0;
*y = 0;
int n = 0;
int i = 0;
for (i = 0; i < sz; i++)
{
n ^= arr[i];//得到兩個單獨出現的數字異或的結果
}
n = n & ((n - 1)^-1);//取出第一個非零比特位
//(n-1)把第一個非零比特位置零,^1按位取反[-1的補碼位爲全1]保留第一個剛置零的比特位,
//過程見http://blog.csdn.net/mzx1317557721/article/details/70495637for (i = 0; i < sz; i++)
{
if (arr[i] & n)
*x ^= arr[i];
else*y ^= arr[i];
}
}