1、java &:按位与,m & 1:如果结果为1,则m的二进制数的最后一位为1;如果结果为0,则m的二进制数的最后一位为0;m自动进行二进制转换,不需特意转换;
2、java >>>:无符号数的右移一位,即如果m=22,二进制数为00010110,m>>>1结果为00001011;右移一位不足的补0;如果m=-22;二进制数为11101001,m>>>1结果为01110100,移出去的位数被丢弃;
3、java中if的条件只能为true、false,不可谓0,1;即if(m & 1)不符合语法规则;
public class Solution {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
int num = 0 , m = n;
while(m != 0){
num = num + (m & 1);
m= m>>>1;
}
return num;
}
}
详细讲解:
Java算法总结:输入一个整数,求该整数的二进制表示中有多少个1 - 不精通则死 - 博客频道 - youkuaiyun.com http://blog.youkuaiyun.com/litton_van/article/details/6656717