【问题描述】
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
【输入形式】
给出两个整数 x 和 y(0 ≤ x, y < 231),用空格分隔
【输出形式】
输出它们之间的汉明距离
【样例输入】
1 4
【样例输出】
2
【样例说明】
1的二进制表示为(00000000 00000000 00000000 00000001)
4的二进制表示为(00000000 00000000 00000000 00000100)
他们的第一位和第三位不一致,所以它们的汉明距离为2
#include <iostream>
using namespace std;
int main(){
long long int x,y,a,b,sum=0; //记得统计数据的变量一定都要初始化,不然总会出错
cin>>x>>y;
for (int i=0;i<31;i++){
a=x%2; //求二进制,模2取余除2变成下一个数
b=y%2;
x/=2;
y/=2;
if (a!=b){
sum++;
}
}
cout<<sum;
return 0;
}