快速统计一个数二进制中1的个数
leetcode中一个题目,让统计二进制中1的个数。
首先第一个想法便是用位运算一位一位的去判断,这样便可以了,但是题目却有个要求复杂度小于 O(n*sizeof(integer))。
这样便无法按着integer的size去逐个计算。
while(n){ count++; n&=(n-1); }
n&(n-1)每次计算都会将最末尾的1去掉这样就可以更快的计算出二进制1的个数。
leetcode中一个题目,让统计二进制中1的个数。
首先第一个想法便是用位运算一位一位的去判断,这样便可以了,但是题目却有个要求复杂度小于 O(n*sizeof(integer))。
这样便无法按着integer的size去逐个计算。
while(n){ count++; n&=(n-1); }
n&(n-1)每次计算都会将最末尾的1去掉这样就可以更快的计算出二进制1的个数。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】博客园2025新款「AI繁忙」系列T恤上架,前往周边小店选购
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步