一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。
请找出这个数字。(使用位运算)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int arr[7] = { 1, 2, 3, 1, 2, 3, 4 };
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);//sz==7
int ret = 0;
for (i = 0; i < sz; i++)
{
ret = ret ^ arr[i];
}
printf("出现一次的数是:%d\n", ret);
system("pause");
return 0;
}
什么是按位异或运算?
符号 :^ 当位数的数值相同时取0,相异时取1.
例如: 0000 1101 1101
0010 1100 1010
按位异或: 0010 0001 0111