示例:输入 7 (0111),10(1010) 输出3
有很多方法可以实现,这里介绍一种课上学到的较好理解的方法
7: 00000000 00000000 00000000 00000111
10:00000000 00000000 00000000 00001010
要判断两个数对应二进制位是否相同,可以通过按位异或(^)的方法,相同为0,相异为1,再统计异或后的结果中,有几个1,则就有几位不相同
int Number1(int x)
{
int count = 0; //总数
while (x != 0)
{
x = x & (x - 1);
count++;
}
return count;
}
int main()
{
int m = 0;
int n = 0;
scanf("%d %d", &m, &n); // 输入两个数
int mid = m ^ n; // 异或
printf("%d\n",Number1(mid)); // 调用判断二进制位有几个1的函数,并将结果作为返回值传给
printf
return 0;
}
这里用到判断二进制形式中有几个一的函数,也是一道初学者需要了解的例题,在上一篇中介绍了3种方法