如何在数字的二进制表示中添加所有1

时间:2015-02-12 04:02:36

标签: c++ recursion binary

我有这个代码来获取数字的二进制表示。我想把这个号码的所有1加起来。我的问题是,当不是将所有1加起来时,它只是将它们打印出来。

我想要的内容

99 = 01100011

有4个1


得到的内容

有1111 1的


#include <iostream>
using namespace std;

int binary(int N)
{
    if (N == 0)
    {
        return 0;
    }
    else;
    {
        binary(N/2);
        int num = 0;
        if (N % 2 == 1)
        {
        num++; 
        cout<<num<<endl;
        }   
    }
}
int main()
{
int number;
cout << "Please enter a number that is greater or equal to 0: ";
cin >> number;
 binary(number);
 }      

1 个答案:

答案 0 :(得分:1)

我将您的代码更改为此

#include <iostream>
using namespace std;

int binary(int N)
{
    static int num = 0;
    if (N != 0)
    {
        binary(N/2);

        if (N % 2 == 1)
        {
        num++; 

        }   
    }
    return num;
}
int main()
{
int number;
cout << "Please enter a number that is greater or equal to 0: ";
cin >> number;
cout <<  binary(number);
}