题目
输入两个整形变量,求两者二进制位中不相同的位数的个数
实现思路
使用异或运算,异或运算就是两数不同,异或为1,两数相同则为0
异或后得到一个二进制数,求出这个二进制数中1的个数,代码如下:
int count_dif_bit(int m,int n)
{
int num = m^n;//^就是异或操作符啦
int count=0;
while(num)
{
num = num&(num-1);
count++;
}
return count;
}
int main()
{
int m=0;
int n=0;
scanf("%d%d",&m,&n);
int count=count_dif_bit(m,n);
printf("count=%d\n",count);
return 0;
}