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

二进制中1的个数

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

JZ15 二进制中1的个数

js中所有数值都以64位格式存储,但位操作会先将数值转化为32位,再进行位操作,之后再把结果转化为64位。 因此,本题中可以将整数n直接看成32位二进制数。

n = n & (n - 1)  //这里只要n中存在1,n与n-1相与就会把最低为的1抵消掉

完整代码:

function NumberOf1(n)
{
    
//     直接把n看成32位二进制数
    
    var num = 0;
    while(n){
        num++;
        n = n & (n - 1) 
    }
    return num
    // write code here
}
module.exports = {
    NumberOf1 : NumberOf1
};
全部评论

相关推荐

瑞雪兆丰年_:可以贴个超级大的校徽,以防HR眼拙
点赞 评论 收藏
分享
牛客小菜鸡66:boss里面,招人的叫老板,找工作的叫牛人
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务