程序员面试宝典:求十进制数字的二进制数位中包含1的个数
2010年3月某杀毒软件笔试题:
1: int func(int i);
2: int main(void)
3: {
4: cout<<func(9999)<<endl;
5: }
6: int func(int i)
7: {
8: int count=0;
9: while(i!=0)
10: {
11: count++;
12: cout<<"i="<<i<<endl;
13: i=i&(i-1);
14: cout<<i<<endl;;
15: }
16: return count;//返回i的二进制数位中包含1的个数。
17: };
结果为:8
func函数返回值是形参x转换为二进制包含1的数量,9999转换为二进制是10011100001111