您的位置:首页 > 编程语言 > Java开发

【leetcode】【Numbers of 1 bits】java >>> &符号

2015-08-12 20:44 507 查看
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 - 不精通则死 - 博客频道 - CSDN.NET http://blog.csdn.net/litton_van/article/details/6656717
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: