编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
输入例子:
1999 2299
输出例子:7
#include <stdio.h>
int Dif_Count(int a, int b)
{
int temp = a^b; //用异或运算将相同位清零
int count = 0;
for (int i = 0; i < 32; i++)//计算1的个数
{
if ((temp >> i) % 2 != 0)
{
count++;
}
}
return count;
}
int main()
{
int a, b;
printf("请输入两个整数:");
scanf("%d%d", &a, &b);
int res = Dif_Count(a,b);
printf("%d和%d的二进制有%d位不同\n", a, b, res);
return 0;
}