Menu
Coddy logo textTech

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となります。

 

challenge icon

チャレンジ

簡単

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;
}

数学パズルのすべてのレッスン

9Binary numbers

Introduction