编程实现: 一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。 请找出这个数字。(使用位运算)

 编程实现:  一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。  请找出这个数字。(使用位运算)

思路:

                   1     2     3    5    3    1    2

1     -------> 0     0    0    1         

2     -------> 0     0    0    1

3    --------> 0     0    1    1

5------------>0     1    0    1

3     -------> 0     0    1    1

1  -------->   0     0    0    1

2    --------> 0     0    1    0

                   0     1    0    1

 

异或运算:  对应位置1的个数为奇数,最终对应结果为1

                 对应位置1的个数为偶数,最终对应结果为0

编程实现: 一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。 请找出这个数字。(使用位运算)

编程实现: 一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。 请找出这个数字。(使用位运算)

 

#include<stdio.h>
#include<stdlib.h>


int main(){
	int  a[] = { 1,  5, 7, 3, 2, 1, 3, 2, 5 };
	int len = sizeof(a) / sizeof(a[0]);
	int  i = 0;
	int ret = 0;
	for (i = 0; i < len; ++i){
		ret ^= a[i];
	}
	printf("%d\n", ret);
	system("pause");
	return 0;
}