二进制中1的个数
前言最近会手写一些常考的面试题目,测试通过后会跟大家分享一下
移位法仅适应于正数的做法:
移位法就是每次判断n的二进制的最低位是否为1,时间复杂度为O(logn)
int quickOne(int n){int count = 0;while (n) {count ++;n = n & (n - 1);}return count;}- 1楼chunyang2178昨天 13:29
- 最后一个要不要把int改为unsigned int ?
- Re: zinss26914昨天 14:19
- 回复chunyang2178nn吗?不需要的,可以处理负数,负数是用补码表示,对负数同样适用
- Re: chunyang2178昨天 15:34
- 回复zinss26914n额,是我晕了,这里用的是n&(n-1),不会产生多余的1