10進数を2進数にするときは、10進数を2で割っていきます。
計算は簡単ですが過程を出力するとなると…ちょっと面倒くさい。
コンピュータは人間が楽をするための道具、プログラムを作っちゃいました。
#include <iostream>
#include <iomanip>
using namespace std;
int main(void)
{
int num;
cout << "input num: ";
cin >> num;
cout << endl;
cout << "2)" << setw(6) << setfill('_') << num << endl;
while (num) {
cout << "2)" << setw(6) << setfill('_') << num / 2 << " --- " << num % 2 << " ↑" << endl;
num /= 2;
}
return 0;
}
$ ./a.out
input num: 11111
2)_11111
2)__5555 --- 1 ↑
2)__2777 --- 1 ↑
2)__1388 --- 1 ↑
2)___694 --- 0 ↑
2)___347 --- 0 ↑
2)___173 --- 1 ↑
2)____86 --- 1 ↑
2)____43 --- 0 ↑
2)____21 --- 1 ↑
2)____10 --- 1 ↑
2)_____5 --- 0 ↑
2)_____2 --- 1 ↑
2)_____1 --- 0 ↑
2)_____0 --- 1 ↑
かなり手抜きをしていますが気にしないでくださいね。
手抜きしすぎてバグがあるかも…テストしてない…