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

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

题目描述


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


代码实现


function NumberOf1(n)
{
    var count = 0;
    while(n !== 0){
        count++;
        n = n & (n-1);
    }
    return count;
}
复制代码


分析


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

  1. n & (n-1) ——> 1101&1100 ——> 1100,count=1
  2. n & (n-1) ——> 1100&1011 ——> 1000,count=2
  3. n & (n-1) ——> 1000&0111 ——> 0000,count=3

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



相关文章
|
30天前
|
算法 Java C++
试题 算法训练 6-2递归求二进制表示位数
试题 算法训练 6-2递归求二进制表示位数
23 0
|
30天前
|
算法 Java
算法编程(十四):颠倒二进制位
算法编程(十四):颠倒二进制位
30 0
|
8月前
|
监控 算法 安全
二进制转十进制算法简介及其在监控软件中的应用
在上网行为管理软件中,匈牙利算法主要应用于解决资源分配的问题。上网行为管理软件可能存在多个用户同时访问同一文件或打印机的情况,为了确保资源的公平共享,需要对资源进行分配
187 2
|
9天前
|
算法 Java Go
【经典算法】LeetCode 67. 二进制求和(Java/C/Python3/Golang实现含注释说明,Easy)
【经典算法】LeetCode 67. 二进制求和(Java/C/Python3/Golang实现含注释说明,Easy)
6 2
|
30天前
|
算法
【免费】面向多微网网络结构设计的大规模二进制矩阵优化算法
【免费】面向多微网网络结构设计的大规模二进制矩阵优化算法
|
30天前
|
算法
算法题 — 整数转二进制,查找其中1的数量
算法题 — 整数转二进制,查找其中1的数量
16 0
|
10月前
|
监控 算法 安全
转:二进制转十进制算法在文档管理软件中的运用
二进制转十进制算法在文档管理软件中有多种应用。
58 0
|
30天前
|
算法 JavaScript
JS算法-颠倒二进制位
JS算法-颠倒二进制位
|
30天前
|
算法 前端开发
前端算法-二进制求和
前端算法-二进制求和
|
11月前
|
算法 安全 调度
【配电网重构】基于改进二进制粒子群算法的配电网重构研究(Matlab代码实现
【配电网重构】基于改进二进制粒子群算法的配电网重构研究(Matlab代码实现