
剑指offer[11]——二进制中1的个数
发布日期:2021-05-13 01:00:28
浏览次数:15
分类:博客文章
本文共 420 字,大约阅读时间需要 1 分钟。
题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
二进制之间的与运算在JS中可以使用&
符号,在这里我们思考一个问题,10的二进制为1010
,当我把5减去1时,其二进制从右往左数第一个1会变为0,这个1右边所有的0会取反变为1,例如:
\[1010-1=1001\]
如果我们把5的二进制与其减去1的二进制进行与操作的话,5的二进制从左往右数第一个1及其右边的所有数字都会变成0,如下:
\[1010\&1001=1000\]
从运算结果来看,进行与操作之后比之前少了一个1,其实我们可以推论得知,其二进制有多少个1就可以进行多少次这样的操作,说到这里大家应该可以明白了,算法如下:
function NumberOf1(n){ let count = 0; while(n != 0){ count++; n = n&(n-1) } return count;}
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年04月09日 04时32分17秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
剑指offer[32]——把数组排成最小的数
2019-03-10
谈谈关于springboot 添加依赖的那些事
2019-03-10
CF1475-D. Cleaning the Phone
2019-03-10
java基础-java与c#接口不同点
2019-03-10
Java并发工具篇
2019-03-10
京喜小程序体验评分优化实践
2019-03-10
C#中文转换成拼音
2019-03-10
C#批量上传图片
2019-03-10
pyhon中安装win32com模块
2019-03-10
C++错误笔记
2019-03-10
【无线通信模块】GPRS DTU不稳定和容易掉线原因
2019-03-10
CSS(六)|页面布局之定位
2019-03-10
比特币(BSV)知识库:身份-BSVAlias
2019-03-10
设计模式 - 2) 策略模式
2019-03-10
SpringBoot使用RedisTemplate简单操作Redis的五种数据类型
2019-03-10
国标流媒体服务器以ROOT身份运行提示“permission denide”报错解决
2019-03-10
qt中转到槽后如何取消信号与槽关联
2019-03-10