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。