二进制中1的个数

二进制中1的个数

http://www.nowcoder.com/questionTerminal/8ee967e43c2c4ec193b040ea7fbb10b8

举个栗子:1100 将它减1后为1011,再拿来跟原数按位与,为 1000,后面的1消除了。有多少个1就做多少次消除,每次消除用count记录下来。

public class Solution {
    public int NumberOf1(int n) {
        int count = 0;
        while(n != 0){
            count++;
            n = n &(n-1);
        }
        return count++;
    }
}

或者每次&1,计算出多少位。
public class Solution {
    public int NumberOf1(int n) {
        int res = 0;
        while(n != 0){
            res += (n & 1);
            n >>>= 1;
        }
        return res;
    }
}
剑指Offer题解 文章被收录于专栏

为了之后反复练习方便查阅。

全部评论

相关推荐

斑驳不同:还为啥暴躁 假的不骂你骂谁啊
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务