编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
输入例子:
1999 2299
输出例子:7
#include<stdio.h>
int count_diff_bit(int m, int n)
{
int i = 0;
int c = 0;//计数器
int tmp = m ^ n;//异或操作符 相同为0,相异为1
//计算tmp的二进制位中有几个1
while (tmp)
{
tmp = tmp & (tmp - 1);//按位与
c++;
}
return c;
}
int main()
{
int m = 1999;
int n = 2299;
int ret = count_diff_bit(m, n);
printf("%d\n", ret);
return 0;
}