统计非负整数二进制展开中数位1的总数。如整数64 的二进制展开为00000000 00000000 00000000 00100000 ,数位1的总数为1。
#include<iostream>
using namespace std;
long long int caculate(long long int n)
{
long long int result = 0;
while (0 < n)
{
result++;
n = n & (n - 1);
}
return result;
}
int main()
{
long long int o;
cin >> o;
cout << caculate(o);
return 0;
}
网友评论