//两个32比特位的数有几个不相同的比特位
#include<stdio.h>
#include<windows.h>
int main()
{
int m, n, i, x, y, count = 0;
printf("请输入m,n:");
scanf_s("%d%d", &m, &n);
for (i = 31; i >= 0; i--)
{
x = m % 2;
m = m / 2;
y = n % 2;
n = n / 2;
if (x != y) //通过循环比较每一位是否相等
{
count++;
}
}
printf("不同的bit位有%d个\n", count);
system("pause");
return 0;
}
//找出一串两两成对出现的数中只出现一次的单数
#include<stdio.h>
#include<windows.h>
int main()
{
int arr[] = { 1, 3, 3, 1, 4, 9, 4, 5, 5 };
int i = 0;
int len = sizeof(arr) / sizeof(arr[0]);
for (i = 1; i < len; i++)
{
arr[0] = arr[0] ^ arr[i];
//将这组数中所有数取按位或,由于相异为1,相同为0,故位运算剩下为1的就是单数
}
printf("这个单数是:%d", arr[0]);
system("pause");
return 0;
}