资讯专栏INFORMATION COLUMN

【刷算法】二进制中1的个数

sanyang / 3193人阅读

摘要:题目描述输入一个整数,输出该数二进制表示中的个数。其中负数用补码表示。代码实现分析例如来说,二进制表示为,那么,,,可以看出来每次与操作都会消灭掉最右边的,所以最终可以得出的二进制表示中有几个

题目描述

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

代码实现
function NumberOf1(n)
{
    var count = 0;
    while(n !== 0){
        count++;
        n = n & (n-1);
    }
    
    return count;
}
分析

例如n=13来说,二进制表示为1101,那么:

n & (n-1) ——> 1101&1100 ——> 1100,count=1

n & (n-1) ——> 1100&1011 ——> 1000,count=2

n & (n-1) ——> 1000&0111 ——> 0000,count=3

可以看出来每次与操作都会消灭掉n最右边的1,所以最终可以得出n的二进制表示中有几个1.

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/95902.html

相关文章

  • 【剑指offer】一个数进制序列1个数

    摘要:图解第二种算法图解代码示例算法如果为真,说明拿到的是二进制序列的个数为算法为的时候说明已经拿完了,循环终止二进制序列中的个数以上代码,还可做优化在此仅作参考,若有更好的算法,还望能够私信告知,多谢各位。 ✨前言✨: 算法是一个程序员的内功,能很好的体现程序员的编程思维,通过学习和掌握常见的算...

    weknow619 评论0 收藏0
  • 别人家面试题:统计“1个数

    摘要:长话短说,让我们来看一道题统计的个数给定一个非负整数,对于任意,,计算的值对应的二进制数中的个数,将这些结果返回为一个数组。第二版本的时间复杂度是最后版本的时间复杂度是,是的二进制数中的的个数,介于之间。 小胡子哥@Barret李靖给我推荐了一个写算法刷题的地方leetcode.com,没有ACM那么难,但题目很有趣。而且据说这些题目都来源于一些公司的面试题。好吧,解解别人公司的面试题...

    SQC 评论0 收藏0
  • 学习数据结构与算法之栈与队列

    摘要:于是翻出了机房里的这本学习数据结构与算法开始学习程序员的基础知识。这本书用了我最熟悉的来实现各种数据结构和算法,而且书很薄,可以说是一本不错的入门教程。队列在头部删除元素,尾部添加元素。 本系列所有文章:第一篇文章:学习数据结构与算法之栈与队列第二篇文章:学习数据结构与算法之链表第三篇文章:学习数据结构与算法之集合第四篇文章:学习数据结构与算法之字典和散列表第五篇文章:学习数据结构与算...

    pingan8787 评论0 收藏0
  • 算法】LeetCode- 阶乘后

    摘要:原题地址中国题目描述给定一个整数,返回结果尾数中零的数量。示例输入输出解释尾数中有个零说明你算法的时间复杂度应为。分析首先暴力破解法就是直接把最终的结果求出来然后看末尾有几个,但是这样做的时间复杂度肯定是太大了。 原题地址:LeetCode中国-172 题目描述 给定一个整数 n,返回 n! 结果尾数中零的数量。 示例 1: 输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示...

    layman 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<