/*------------------------------- 10進数から2進数を求める 手計算で求める方法と同じ方法で求めます。 例:10の場合 10| 5 | 0 2 | 1 1 0 よって1010(2)が答え。 プログラムでは文字配列に2進データを入れるようにします。 --------------------------------*/ #include void binary(char *,int); int main(void) { int d; char b[1000]; puts("10進数を入力せよ。マイナスの値を入力すると終了。"); while(1){ scanf("%d",&d); if(d < 0)break; binary(b,d); printf("%d(10) = %s(2)\n",d,b); } return 0; } /* 10 -> 2 */ void binary(char *b,int d) { int i=0,j=0,tmp; if(d < 0)return; do{ b[i++] = d % 2 + '0'; }while(d >>= 1); i--; /* reverse */ while(i > j){ tmp = b[j]; b[j] = b[i]; b[i] = tmp; j++; i--; } b[i+j+1] = '\0'; return; }