数値を基数 10 から基数 2 に変換する基本的なプログラムを実行しています。次のコードを取得しました。
#include <cstdlib>
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
int main()
{
int num=0, coc=0, res=0, div=0;
printf ("Write a base 10 number\n");
scanf ("%d", &num);
div=num%2;
printf ("The base 2 value is:\n");
if(div==1)
{
coc=num/2;
res=num%2;
while(coc>=1)
{
printf ("%d", res);
res=coc%2;
coc=coc/2;
}
if(coc<1)
{
printf ("1");
}
}
else
{
printf ("1");
coc=num/2;
res=num%2;
while(coc>=1)
{
printf ("%d", res);
res=coc%2;
coc=coc/2;
}
}
printf ("\n");
system ("PAUSE");
return EXIT_SUCCESS;
}
特定の数値ではすべて問題ありませんが、数値 11 を基数 2 に変換しようとすると 1101 になり、56 を試行すると 100011 になります... これは論理的な問題であることはわかっており、基本的なアルゴリズムと関数に制限されています。 :(... 何か案は?