位1的个数
public int hammingWeight(int n) {
if (n == 0) {
return 0;
}
int i = 1;
int count = 0;
for (int j = 0; j < 32; j++) {
if ((n & i) != 0) {
count++;
}
i = (i << 1); //逻辑左移,右边补零
}
return count;
}
符号<<:逻辑左移,即在右边补零
思路:将1初始化后,1和n的每一位进行对比,当每次比完之后,在1后补零,和下一位对比。
汉明距离
public int hammingDistance(int x, int y) {
int xor=x^y;
int count=0;
while(xor!=0){
xor=xor&(xor-1);
count++;
}
return count;
}