【问题描述】: 两个int(32位)整数m和n的二进制表达中,有多少个二进制位(bit)不同?
输入例子: 1999和2299 输出例子:7
【解决思路】:异或操作符的特点是相同为0,相异为1。我们先将两个数异或在一起,那么它的二进制中有几个1,就有几个位数不同。怎么求一个数二进制中1的个数,请参考我前边写过的一篇博客------>求二进制中1的个数
【参考代码】:
#include<stdio.h>
#include<windows.h>
int main()
{
int a = 1999;
int b = 2299;
int count = 0;
int ret = a^b;
while (ret)
{
ret = ret&(ret - 1);
count++;
}
//将两数异或在一起,求这个数二进制中1的个数
printf("count=%d\n",count);
system("pause");
return 0;
}