1、题目描述
2、分析
求两个数的汉明距离,题目中给出了定义,也就是两个数的二进制数中不同的位的个数,这个题和之前求一个数的二进制中的1的个数很像,在求一个数的二进制中的1的个数需要将每一位与1相与,这道题我们也可以这样,将两个数的每一个位分别与1相与,如果结果相同表示两个位相同,不同则计数1,然后将传入的两个数右移一位抛弃掉计算过的位。
3、代码
class Solution {
public:
int hammingDistance(int x, int y) {
int res=0;
for(int i=0;i<32;++i){
if((x&1)!=(y&1)) ++res;
x=x>>1;
y=y>>1;
}
return res;
}
};
4、相关知识点
位操作。