题解 | #求int型正整数在内存中存储时1的个数#
求int型正整数在内存中存储时1的个数
https://www.nowcoder.com/practice/440f16e490a0404786865e99c6ad91c9
调用数学运算库,遍历幂值直至其大于输入值,再进一步循环处理,最后都会等于2的某次幂(0或1)
#include<bitset>
#include<iostream>#include <math.h>
using namespace std;
int main()
{
int num,i=0,j=0;
cin>>num;
if (num==1)
cout<<1;
//2的幂累加,直至其值大于等于输入值
while(num>pow(2,i))
{
i++;
//大于则减去最接近它的幂次方,并记录一次1的值
if (num<pow(2,i)){num-=pow(2,i-1);
j++;
i=0;}
}
//最后假如相等的话,再记录一次1值
if (num==pow(2,i))j++;
cout<<j;
return 0;
}
#华为测评#