世界上有10种人,一种懂二进制,一种不懂。那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么?
输入例子:
1999 2299
7
分析:先将2个十进制数异或,然后计算出异或后1的个数,还是经典问题“二进制数中1的个数”,这里只给一种解法,其他的见《编程之美》。
#include <iostream>
using namespace std;
int main(void)
{
int m,n;
cin>>m>>n;
m=m^n;
int num=0;
while(m)
{
m&=(m-1);
num++;
}
cout<<num<<endl;
return 0;
}