位运算包含按位与、按位或、按位异或、按位取反、左移和右移
按位与:& 1 & 1 = 1 1 & 0 = 0 0 & 1 =0 0 & 0 = 0
按位或:| 1 | 1 = 1 1 | 0 = 1 0 | 1 = 1 0 | 0 = 0
按位异或:^ 1 ^ 1 = 0 1 ^ 0 = 1 0 ^ 1 = 1 0 ^ 0 = 0
注:若a=a^b,则c^a=c^(a^b),且a^b^a=b
eg: b[ ]={4,3,4,5,5}
b[0]=b[0]^b[1]=100^011=111
b[0]=b[0]^b[2]=111^100=011
b[0]=b[0]^b[3]=011^101=110
b[0]=b[0]^b[4]=110^101=011
#include<stdio.h>
#include<windows.h>
int main()
{
int a[] = {0,1,2,3,4,9,0,2,3,1,4};
int i;
int len = sizeof (a) / sizeof(a[0]);
for (i = 1; i < len; i++)
{
a[0] = a[0] ^ a[i];
}
printf("单独的数字是%d\n", a[0]);
system("pause");
return 0;
}