读书笔记(程序员面试宝典第三版)

1.求结果。

#include<iostream>

using namespace std;

 

int func(int x)

{

int count = 0;

while (x)

{

count ++;

x = x&(x-1);

}

return count;

}

 

int main()

{

cout<<func(9999)<<endl;

return 0;

}

 

输出结果:8

 

解析:执行语句“x = x&(x-1);”时,将形参x转换成二进制后,每执行一遍该程序,二进制形式的x中的1将消掉一个。所以就本例题而言,func函数的返回值count是形参x转换成二进制后包含1的数量,这是解本题的关键。9999转化成二进制是10011100001111

你可能感兴趣的:(读书笔记)