ほぼ理解できたと思いますが、これを理解しようとしてぐるぐる回っているように感じます。文字列や配列を使わずに out cout に挑戦。例として 56 という数字を取り上げましたが、56 は 111000 に等しくなければなりませんが、これは 7 になるまで正常に行われるため、そうではありません。その後、数字は number*2 + number%2 に等しくなり、15 に等しくなり、すべて 1 が出力されます。もうIDK、これは私を月に連れて行ったり戻ったりしています。
#include <iostream>
using namespace std;
int main()
{
int number = 0;
int n = 1;
int x = n;
cin>>number;
cout<<n%2;
while(n <= number)
{
if(n%2 == 0)
{
n = n*2;
cout<<0;
}
else
{
n = n*2 + n%2;
cout<<n%2;
}
}
}