题目:
两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。
给你两个整数 x 和 y,计算并返回它们之间的汉明距离。
class Solution {
/*
1、汉明距离就是求二进制位中有几个不同的位数
2、所以先把两个数 做 异或 运算
3、然后对异或的结果统计有多少个 1.
res & 1 表示取出 res 的最后一位
*/
public:
int hammingDistance(int x, int y)
{
int res = x ^ y, count = 0;
while(res)
{
// 每次对最后一位进行判断,如果最后一位是 1,则计数 + 1,这两种写法都是对的
// if((res & 1) == 1) count++;
count += res & 1;
// 右移一位,因为已经统计过最后一位了
res >>= 1;
}
return count;
}
};