Introduction
Coddyの「数学パズル」コースのレッスン 18/20。
2進数(にしんすう)は、2進記数法(にしんきすうほう)または2進法(にしんほう)で表された数であり、通常「0」(ゼロ)と「1」(いち)の2つの記号のみを使用する数学的表現方法です。[出典: フリー百科事典『ウィキペディア(Wikipedia)』]
表記法:110=12、210=102、310=112、410=1002 は、10進法(10進記数法)における1、2、3、4という数字が、2進法における1、10、11、100と等しいことを意味します。
2進法での数え方は、他のどの記数法での数え方とも似ています。1桁から始まり、各記号を昇順に数えていきます。
10進法の整数をそれに対応する2進法(バイナリ)に変換するには、その数を2で割ります。余りが最下位ビット(一番右のビット)になります。商を再び2で割り、その余りが次の下位ビットになります。このプロセスは、商が1になるまで繰り返されます。2で割ったときの余りは必ず0か1になるため、余りの列(最後の商である1を含む)が2進法の値を形成します。例えば、510 は 1012 と表現されます。なぜなら:
5を2で割ると2で余りが1です:5:2 = 2(1)。したがって、最下位ビットは1です。次に、2:2=1(0)。したがって、次の下位ビットは0、その次は1となります。
チャレンジ
簡単10進数の整数を受け取り、それに対応する2進数を文字列形式で返す関数 calcBinary を作成してください。
組み込み関数を使わずに作成してみてください。
自分で試してみよう
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include "solution.h"
int main() {
int n;
if (scanf("%d", &n) != 1) n = 0;
char* r = calcBinary(n);
printf("%s\n", r);
return 0;
}