两个int(32)位整数m和n的二进制表达中,有多少个位(bit)不同?
我们举两个例子
例如 1999 其二进制表达式:0000 0000 0000 0000 0000 0111 1100 1111
2999 其二进制表达式:0000 0000 0000 0000 0000 1011 1011 0111
有6个位是不同的。
这题我们可以采用异或操作符来解决,由异或操作符我们可以知道,两数相同为0,向异为1
我们只要将两个数异或,求结果中的二进制参数中有几个1,即可求出答案
关于求二进制参数中有几个1,我写过这么一篇文章:https://blog.csdn.net/question_mark/article/details/99637263
关于这题的具体代码如下
int main(){
int a = 1999;
int b = 2299;
int ret = 0;
ret = a^b;
int count = 0;//计数
while (ret > 0){
if (ret % 2 == 1){
count++;
ret /= 2;
}
else
ret /= 2;
}
printf("%d\n", count);
system("pause");
return 0;
}