两个整数之间的汉明距离指的是这两个数对应二进制位不同的位置的数目。
【输入形式】
给出两个整数x和y(0<=x,y<2^31),用空格分隔
【输出形式】
输出他们之间的汉明距离
【样例输出】
1 4
【样例说明】
00000000 00000000 00000000 00000001
00000000 00000000 00000000 00000100
思路:先对输入的俩数进行异或操作,相同为0,不同为1;然后判断含有多少个1即可。
#include <iostream>
#include <stdio.h>
int func(int x);
using namespace std;
int main()
{
int HM,a,b,distance;
cin >> a>>b;
HM = a ^ b;
distance = func(HM);
printf("%d",distance);
return 0;
}
int func(int x)
{
int countx = 0;
while(x)
{
countx ++;
x = x&(x-1);
}
return countx;
}