2進法とは

日常では 0 〜 9 までの数字によって表す 10 進法を使用しますが、コンピューターは 0 と 1 の 2 種類の数字だけで数を表す。

  • 10 進法は「10」で繰り上がる ・・・ 109 に 1 を足すと 110
  • 2 進法は「2」で繰り上がる ・・・ 101 に 1 を足すと 110

10 進法と 2 進法

10進法 2進法 10進法 2進法
1 1 51 110011
2 10 52 110100
3 11 53 110101
4 100 54 110110
5 101 55 110111
6 110 56 111000
7 111 57 111001
8 1000 58 111010
9 1001 59 111011
10 1010 60 111100
11 1011 61 111101
12 1100 62 111110
13 1101 63 111111
14 1110 64 1000000
15 1111 65 1000001
16 10000 66 1000010
17 10001 67 1000011
18 10010 68 1000100
19 10011 69 1000101
20 10100 70 1000110
21 10101 71 1000111
22 10110 72 1001000
23 10111 73 1001001
24 11000 74 1001010
25 11001 75 1001011
26 11010 76 1001100
27 11011 77 1001101
28 11100 78 1001110
29 11101 79 1001111
30 11110 80 1010000
31 11111 81 1010001
32 100000 82 1010010
33 100001 83 1010011
34 100010 84 1010100
35 100011 85 1010101
36 100100 86 1010110
37 100101 87 1010111
38 100110 88 1011000
39 100111 89 1011001
40 101000 90 1011010
41 101001 91 1011011
42 101010 92 1011100
43 101011 93 1011101
44 101100 94 1011110
45 101101 95 1011111
46 101110 96 1100000
47 101111 97 1100001
48 110000 98 1100010
49 110001 99 1100011
50 110010 100 1100100

10 進法の仕組み(2 進法も考え方は同じ)

1024 の場合

千の位 百の位 十の位 一の位
1 0 2 4

1024 の計算方法

1000 × 1 = 1000 全部を足して 1000 + 0 + 20 + 4 = 1024 となる
100 x 0 = 0
10 x 2 = 20
1 x 4 = 4

2 進法の仕組み

8の位 4の位 2の位 1の位
1 0 1 1

1011 の計算方法(10 進法へ変換)

8 × 1 = 8 全部を足して 8 + 0 + 2 + 1 = 11 となる
4 x 0 = 0
2 x 1 = 2
1 x 1 = 1

10進法から2進法 / 10進法から10進法

数が 0 になるまで 2 で割った余りを書いていき、それを下から読むことで 10 進法を 2 進法に変換することができます。

10進法を2進法に変換するプログラム (c++)

binary.cpp

#include <iostream>
#include <string>
using namespace std;

int N;
string Answer = "";

int main() {
  cin >> N;
  while (N >= 1) {
    // N % 2 は N を 2 で割った余り (例:N=13 の場合 1)
    // N / 2 は N を 2 で割った値の整数部分 (例:N=13 の場合 6)
    if (N % 2 == 0) Answer = "0" + Answer;
    if (N % 2 == 1) Answer = "1" + Answer;
    N = N / 2;
  }
  cout << Answer << endl; //出力
  return 0;
}

コンパイル、実行

# コンパイル、実行
g++ -o binary binary.cpp && ./binary

# 標準入力で 4 を入力する
4
# 標準出力で 100 が出力される
100