3,881
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
int pop(int x)//《代码之美》思路
{
int ret = x, tmp = 1;
for(int i = 1; i <= 31; i++)
{
tmp *= 2;
ret -= (x/tmp);
}
return ret;
}
int jud(int x)//另一种思路、将结果与上一种思路对比
{
int ret = 0, tmp = x;
while(tmp)
{
if(tmp & 0x01)
ret++;
tmp = tmp >> 1;
}
return ret;
}
int main(void)
{
int n = 1225;//n值可以改变
char arr[32] = {0};
itoa(n, arr, 2);//二进制字符串
puts(arr);
cout << "pop() = " << pop(n) << endl;
cout << "jud() = " << jud(n) << endl;
system("pause");
return 0;
}