当前位置 博文首页 > L_add的博客:两个数二进制中不同位的个数
题目内容:
编程实现:两个int(32位)整数m和整数n的二进制表达中,有多少个位(bit)不同?
例:
输入:1999 2299
输出: 7
int count_dif(int m, int n)
{
int i;
int count = 0;
for (i = 0; i < 32; i++)
{
if (((m >> i) & 1) != ((n>>i)&1))
count++;
}
return count;
}
int main()
{
int m, n;
scanf("%d%d", &m, &n);
int ret = count_dif(m, n);
printf("%d\n", ret);
return 0;
}
优化:
int count_dif(int m, int n)
{
int count = 0;
int tmp = m^n;
while (tmp)
{
tmp = tmp&(tmp - 1);
count++;
}
return count;
}
int main()
{
int m, n;
scanf("%d%d", &m, &n);
int ret = count_dif(m, n);
printf("%d\n", ret);
return 0;
}
cs