The Hammingdistance between two integers is the number of positions atwhich the corresponding bits are different.
Given two integers x and y, calculate the Hamming distance.
Note:
0 ≤ x, y < 231.
Example:
Input: x = 1, y = 4
Output: 2
Explanation:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑
The above arrows point to positions where the corresponding bits are different.
Subscribe tosee which companies asked this question.
求两个数的汉明距离
汉明距离是一个概念,它表示两个(相同长度)字对应位不同的数量,我们以d(x,y)表示两个字x,y之间的汉明距离.对两个字符串进行异或运算,并统计结果为1的个数,那么这个数就是汉明距离。
- 所以我们计算两个数的汉明距离的时候就可以先异或然后遍历统计这个数以2进制形式体现的时候为1的个数,代码如下
int hammingDistance(int x, inty) {
int a;
int count=0;
a= x ^ y;
for(i=0;i<32;i++)
count +=(a>> i) &1;
return count;
}
- 提高一下速度可以采用num &=(num-1)这个运算,迅速消除num最右边的1,遍历次数变成num中1的个数次
int hammingDistance(int x, inty) {
int a;
int count;
a= x ^ y;
while(a != 0)
{
a&= (a-1);
count++;
}
return count;
}