现在我们要输入两个数,然后比较他们二进制形式下,有多少位是不一样的。
那么5和10在二进制中不同位的个数就是 4个
怎么做呢?很简单其实我们只需要将5异或10,异或后的结果只要每一位中不一样的对应位的值就会为1,然后我们统计一下有几个1就好了,最快的统计是不是用tmp&(tmp-1)去掉最右边的1。
再把 tmp&(tmp-1)的思路放着让大家捋捋
int main()
{
int a = 5;
int b = 10;
int tmp = a ^ b;
int count = 0;
//统计tmp中有几个1
while (tmp != 0)
{
tmp = tmp & (tmp - 1);
count++;
}
printf("%d", count);
return 0;
}
代码写到这就完成了,不难理解吧,有帮助请给个赞!