编程实现: 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
程序代码如下:
#include <stdio.h>
int count_diffrent_bits(int x, int y)
{
int i = 0;
int tmp =x ^ y;
int count = 0;
while (tmp)
{
tmp = tmp & (tmp - 1);
count++;
}
return count;
}
int main()
{
int m = 0;
int n = 0;
printf("请输入两个整数m,n:\n");
scanf("%d\n%d", &m, &n);
int ret = count_diffrent_bits(m, n);
printf("两个整数%d,%d有%d位不同\n", m, n, ret);
return 0;
}
程序运行结果如下: