两个数二进制中不同位的个数
Posted L_add
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两个数二进制中不同位的个数相关的知识,希望对你有一定的参考价值。
两个数二进制中不同位的个数
题目内容:
编程实现:两个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;
}
以上是关于两个数二进制中不同位的个数的主要内容,如果未能解决你的问题,请参考以下文章