【刷算法】二进制中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.



相关文章
|
7月前
|
算法 Java C++
试题 算法训练 6-2递归求二进制表示位数
试题 算法训练 6-2递归求二进制表示位数
52 0
|
7月前
|
算法 Java
算法编程(十四):颠倒二进制位
算法编程(十四):颠倒二进制位
59 0
|
监控 算法 安全
二进制转十进制算法简介及其在监控软件中的应用
在上网行为管理软件中,匈牙利算法主要应用于解决资源分配的问题。上网行为管理软件可能存在多个用户同时访问同一文件或打印机的情况,为了确保资源的公平共享,需要对资源进行分配
238 2
|
5月前
|
机器学习/深度学习 算法 计算机视觉
通过MATLAB分别对比二进制编码遗传优化算法和实数编码遗传优化算法
摘要: 使用MATLAB2022a对比了二进制编码与实数编码的遗传优化算法,关注最优适应度、平均适应度及运算效率。二进制编码适用于离散问题,解表示为二进制串;实数编码适用于连续问题,直接搜索连续空间。两种编码在初始化、适应度评估、选择、交叉和变异步骤类似,但实数编码可能需更复杂策略避免局部最优。选择编码方式取决于问题特性。
|
6月前
|
算法 Java Go
【经典算法】LeetCode 67. 二进制求和(Java/C/Python3/Golang实现含注释说明,Easy)
【经典算法】LeetCode 67. 二进制求和(Java/C/Python3/Golang实现含注释说明,Easy)
90 2
|
5月前
|
算法
Ngnix02 --- Ngnix的功能特性及常见功能,Ngnix常用的功能模块,有不同算法,根据不同算法进行转发,ip_hash、url_hash、fair,核心组成 ngnix二进制可执行文件
Ngnix02 --- Ngnix的功能特性及常见功能,Ngnix常用的功能模块,有不同算法,根据不同算法进行转发,ip_hash、url_hash、fair,核心组成 ngnix二进制可执行文件
|
6月前
|
算法
【经典LeetCode算法题目专栏分类】【第4期】BFS广度优先算法:单词接龙、最小基因变化、二进制矩阵中的最短路径
【经典LeetCode算法题目专栏分类】【第4期】BFS广度优先算法:单词接龙、最小基因变化、二进制矩阵中的最短路径
|
7月前
|
算法
【免费】面向多微网网络结构设计的大规模二进制矩阵优化算法
【免费】面向多微网网络结构设计的大规模二进制矩阵优化算法
|
监控 算法 安全
转:二进制转十进制算法在文档管理软件中的运用
二进制转十进制算法在文档管理软件中有多种应用。
81 0
|
7月前
|
算法
算法题 — 整数转二进制,查找其中1的数量
算法题 — 整数转二进制,查找其中1的数量
53 0