求二进制数中1的个数
继京东618店庆时买的《编程之美》这本书,翻了翻,发现里面的题还是挺有意思的,看起来我们觉得很简单的题目,解法却有很多很多种,真是一个比一个巧妙,于是,决定记录一下。
书中的题目如下
- 对于一个字节(8bit)的无符号数,求其二进制表示中“1”的个数,要求算法的执行效率尽可能高。
就像书中给我们说的一样,我们一般人可能想到的解决方法如下
int countOne(int n){
int count=0;
while(n){
if(n%2==1){
count++;
}
n/=2;
}
return count;
}