1的个数 C++求解急

1的个数
总时间限制:1000ms 内存限制:65536KB

描述
给定一个十进制非负整数N,求其对应2进制数中1的个数。

输入INPUT:
输入格式
输入包含一行,包含一个非负整数N。(N < 109)

输入样例
100

输出OUTPUT:
输出格式
输出一行,包含一个整数,表示N的2进制表示中1的个数。

输出样例
3

#include <iostream>
using namespace std;
int main()
{
    int N=0,count=0;
    cin>>N;
    while(N)
    {
        if(N%2==1)
            count++;
        N/=2;
    }
    cout<<count<<endl;
    return 0;
}

有帮助望采纳

通过将输入的数左移或右移后,与1进行&运算来计数。效率应该是比较高的

这样应该好理解些


#include <iostream>
using namespace std;
int main()
{
    unsigned int N=0,count=0;
    cin>>N;
    for(int i = 0; i < 32; i++)
    {
        if((N >>i) & 1)
            count++;
    }
    cout<<count<<endl;
    return 0;
}