目录
1.思路解析
求两个数二进制中不同位的个数,首先要明白如何排查除再哪一位上两个二进制数是不同的,在这里我们用到了^(按位异或)因为其规则是同则为0,相异为1,然后如果为0的话就相同,
为1的话就相异。只要为1就记录下来,来遍历下一个数一次往前遍历。
2.代码实现
#include <stdio.h>
int main()
{
int a=0;
int b=0;
scanf("%d %d",&a,&b);
int count=0;
int tmp=a^b;
while(tmp!=0)//如果a^b等于0那么就代表着两个数全都相同;
{
tmp=tmp&(tmp-1);//每次去掉一个一直至全0
count++;//去掉几次一就代表着有几个不同,当全是0的时候不执行循环跳出
}
printf("%d",count);
}
实现的知识
运用了异或的性质相同为0,相异为一;