题解 | #二进制中1的个数#

二进制中1的个数

https://www.nowcoder.com/practice/8ee967e43c2c4ec193b040ea7fbb10b8

public class Solution {
    public int NumberOf1(int n) {
        //输出二进制中1的个数
        //遍历每一位,从右开始遍历,判断完,向右移
        //负数用补码表示
        // int count = 0;
        // while(n != 0){
        //     if((n & 1) == 1){
        //         count++;
        //     } 
        //     n = n >>> 1;
        // }
        // return count;
        //巧用n&(n-1)
        //n&(n-1)能将最后一位的1变成0
        int count = 0;
        //注意,不能用n > 0, 因为n可能为负数
        while(n != 0){
            count++;
            n &= n-1;
        }
        return count;
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务