#include <stdio.h>
#include <stdlib.h>
int differ_bits(int a, int b)
{
int tmp = a^b;
int count = 0;
int i = 0;
for (i = 0; i < 31; i++)
{
if ((tmp >> i) & 1 == 1)
count++;
}
return count;
if (tmp == 0)
return 0;
}
int main()
{
int m = 0;
int n = 0;
scanf("%d%d",&m,&n);
int ret=differ_bits(m, n);
printf("%d ",ret);
system("pause");
return 0;
}
当a与b对应的二进制位不同时,对应的每一位二进制相异或后的结果为1,存储于tmp中,然后求解tmp中的二进制位中1的个数即可。
“`