日常では 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 の場合
1024 の計算方法
1000 |
× |
1 |
= |
1000 |
全部を足して 1000 + 0 + 20 + 4 = 1024 となる |
100 |
x |
0 |
= |
0 |
10 |
x |
2 |
= |
20 |
1 |
x |
4 |
= |
4 |
2 進法の仕組み
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