私たちにとってなじみ深い値の表し方は「0」から「9」の数字を使って値を表現する10進数ですが、コンピュータは「0」と「1」だけで値を表現する2進数であらゆるデータを取り扱っています。本記事ではコンピュータ学習をするうえで知っておくべき2進数について基礎から解説します。また、基数変換の方法や早見表も紹介するので今後の学習の参考にしてください。
2進数をちゃんと理解するための基礎知識
10進数
2進数について説明する前に、私たちにとってなじみの深い10進数について解説します。10進数を理解すれば2進数も理解しやすくなるでしょう。10進数とは、「0」から「9」までの10種類の数字を使い、それよりも大きい数になると1桁を増やす数え方です。「10進数」と呼ばれる理由は1桁で10種類の数字を用いるからです。9の次は10といったように、10種類を使い切ると1桁増やすことで、より大きな数を数えられるようになります。
基数
1つの桁に出てくる数字の数を「基数」といいます。10進数は10を、2進数は2を基数とする数え方です。
2進数とは
10進数とは、「0」から「9」の10種類を使いますが、2進数では「0」と「1」の2種類の数字を使って値を表現します。1桁に「0」と「1」の2種類しか用いることができないので、「0」、「1」と続き、10進数で言うところの「2」、「3」、「4」を表現するには桁上がりさせて「10」(読み方は「ジュウ」ではなく「イチゼロ」)、「11」(イチイチ)、「100」(イチゼロゼロ)と続きます。
10進数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
2進数 | 0 | 01 | 10 | 11 | 100 | 101 | 110 | 111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 | 10000 |
表現方法
10進数は右から1桁目が「1」、2桁目が「10」、3桁目が「100」といったように、n桁目が基数10の「n-1」乗の重みを持ちます。
たとえば、10進数の「456」を例に挙げます。各桁には右からそれぞれ10∧0、10∧1、10∧2の重みがあります。
4×10∧2+5×10∧1+6×10∧0=4×100+5×10+6×1=400+50+6=456
となります。
これに対し、2進数は右から1桁目が(10進数における)「1」、2桁目が「2」、3桁目が「4」というように、n桁目が基数2の「n-1」乗の位となります。
たとえば、2進数の「10100」を例に挙げると、各桁にはそれぞれ2∧n-1乗の重みがあるのでこれを10進数に変換すると、
2∧4+2∧2=16+4=20
となります。
コンピュータで2進数が用いられる理由
私たちにとってなじみ深いのは「0」から「9」の数字を使って値を表現する10進数です。しかし、コンピュータ内部においては「0」と「1」だけで値を表現する2進数であらゆるデータを取り扱っています。これはコンピュータにとって、2進数の方が扱いやすいためです。人間が10進数で入力したデータもコンピュータ内部で2進数に変換されます。コンピュータ内部では、電気でデータを示しますが、その際1本の電線で1桁の値を表します。10進数では電気の強さを10段階で変化させなくてはならず大変ですね。その点、2進数であれば、容易に表せます。「0」と「1」の2種類だけなので計算がシンプルで簡単になるだけでなく、電子回路でのオンとオフのように表せます。それによって、信号を組み合わせて値を表現するなど、コンピュータのハードウェアをシンプルにできるのです。
ただ、コンピュータ内部の電線の本数にも限りがあることには注意する必要があります。電線が32本である場合、32桁を超えるデータを扱えません。これはCPUやメモリに関しても同様です。
10進数ではダメなの?
10進数で演算を行うコンピュータを開発することも可能です。 現に、初めて開発されたコンピュータ「ENIAC」は、10進演算方式を採用していました。ただ、10進数を用いるとコンピュータが必要以上に複雑化してしまいます。 実際、ENIACでは約18,800 本の真空管が用いられていましたが、そののちに2進数を採用して開発されたコンピュータ「EDSAC」で使用された真空管はわずか約3,000 本と、違いが明らかです。
また、1830年代には機械式計算機を発明した計算機科学者チャールズ・バベッジ氏も10進演算方式の機械式計算機の開発を試みましたが、非常に複雑化したことで苦戦したようです。一方でドイツの発明家コンラート・ツーゼ氏は1838年、2進数演算方式を採用した機械式計算機「Z1」を開発しました。
【余談】16進数
コンピュータでは2進数が用いられます。しかし、2進数ですべてを表現しようとするとデメリットがあります。2進数は桁上がりが激しく、大きな値を2進数で表現しようとするとそうしても桁数も多くなってしまいます。
たとえば、10進数の10は2進数では「1010」ですが、 16進数では「A」と表せます。
このように、大きな値を表すのに2進数ではなく16進数が重宝されます。
10進数 | 2進数 | 16進数 |
1 | 1 | 1 |
10 | 1010 | A |
100 | 110 0100 | 64 |
2進数を下桁から4桁ごとに区切り、4桁単位で16進数に置きかえられます。
16進数にはアルファベットが混ざる分、慣れるまで難しく感じるかもしれませんが、「0」と「1」だけで表現する2進数よりは、 はるかに扱い易いでしょう。
10進数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
2進数 | 0 | 01 | 10 | 11 | 100 | 101 | 110 | 111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 | 10000 |
16進数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | a | b | c | d | e | f | 10 |
2進数を下桁から4桁ごとに区切り、4桁単位で16進数に置きかえられます。
16進数にはアルファベットが混ざる分、慣れるまで難しく感じるかもしれませんが、「0」と「1」だけで表現する2進数よりは、 はるかに扱い易いでしょう。
2進数の活用例
プログラミング
コンピュータでは基本的には2進数でデータ処理を行います。
データベース関連
データベース管理やバックアップに2進数や16進数でデータのインポート・エクスポートを行うことがあります。
電子回路設計
論理回路やデジタルICの設計などには2進数が用いられます。
2進数を扱う上で重要な用語
bit(ビット)/byte(バイト)
bitとは2進数桁を指す「binary digit」の略で、その名のとおり、2進数の1桁を指します。2進数の1桁を1bitとし、電線1本で表せる2進数データです。ビット数(2進数の桁)が増えると表現できるデータの値も増えます。1bitでは0と1の2パターンですが、2ビットでは、00、01、10、11の4パターン、3ビットでは8パターンといったように、1bit増えると表現できる値も2倍になります。
一方でbyteは2進数の8桁を指します。すなはち、8桁の2進数は、8bitの2進数でもあり、1byteの2進数とも言うことができます。コンピュータにおいて、bitはデータの最小単位であり、byteはデータの基本単位です。コンピュータは、byte単位でデータを扱うのが一般的です。
なお、1byte/8bitで表現できる値は00000000~11111111の256パターンです。
2の補数表現
2進数で整数のマイナスの値を表す場合には、補数という特殊なデータ表現を用いることがあります。10進数のマイナスの値を、2の補数表現の2進数にする場合、まず、8bitの2進数にしてから0と1の数字を反転させてから1を足すことで実現できます。
(例)00000001(プラス1)→(反転)→11111110→(1を足す)→11111111(マイナス1)
符号ビット
2の補数表現では、最上位の桁が0であればプラス、1であればマイナスの値とします。 そしてこの最上位桁を符号ビットといいます。
たとえば、 8bitの場合、00000000~01111111が10進数でいう0~127、11111111~10000000が10進数でいう-1~-128を指します。
変換方法
ある進数で示された値をほかの進数に変換することを基数変換といいます。
2進数→16進数への基数変換
2進数を下桁から4桁(4bit)ごとに区切り、4桁単位で16進数に置きかえます。
16進数→2進数への基数変換
16進数を1文字ずつ2進数に置きかえます。
n進数→10進数への基数変換
各桁を10進数に直して合計します。
(例1)16進数の2A→16×2+10=42
(例2)2進数の101→2∧2×1+2∧0×1=4+1=5
10進数→n進数への基数変換
変換する10進法の数をnで割り、余りの数を右に記述します。出た商を連続で割り、下から逆L字に数字を拾うことでn進法に変換できます。
ITスキルの習得方法は?
書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。
ただ、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。
プログラミングスクールならテックマニアがおすすめ!
ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。
<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~
このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。
早見表【10進数・2進数・16進数】
10進数 | 2進数 | 16進数 |
0 | 00000000 | 0 |
1 | 00000001 | 1 |
2 | 00000010 | 2 |
3 | 00000011 | 3 |
4 | 00000100 | 4 |
5 | 00000101 | 5 |
6 | 00000110 | 6 |
7 | 00000111 | 7 |
8 | 00001000 | 8 |
9 | 00001001 | 9 |
10 | 00001010 | a |
11 | 00001011 | b |
12 | 00001100 | c |
13 | 00001101 | d |
14 | 00001110 | e |
15 | 00001111 | f |
16 | 00010000 | 10 |
17 | 00010001 | 11 |
18 | 00010010 | 12 |
19 | 00010011 | 13 |
20 | 00010100 | 14 |
21 | 00010101 | 15 |
22 | 00010110 | 16 |
23 | 00010111 | 17 |
24 | 00011000 | 18 |
25 | 00011001 | 19 |
26 | 00011010 | 1a |
27 | 00011011 | 1b |
28 | 00011100 | 1c |
29 | 00011101 | 1d |
30 | 00011110 | 1e |
31 | 00011111 | 1f |
32 | 00100000 | 20 |
33 | 00100001 | 21 |
34 | 00100010 | 22 |
35 | 00100011 | 23 |
36 | 00100100 | 24 |
37 | 00100101 | 25 |
38 | 00100110 | 26 |
39 | 00100111 | 27 |
40 | 00101000 | 28 |
41 | 00101001 | 29 |
42 | 00101010 | 2a |
43 | 00101011 | 2b |
44 | 00101100 | 2c |
45 | 00101101 | 2d |
46 | 00101110 | 2e |
47 | 00101111 | 2f |
48 | 00110000 | 30 |
49 | 00110001 | 31 |
50 | 00110010 | 32 |
51 | 00110011 | 33 |
52 | 00110100 | 34 |
53 | 00110101 | 35 |
54 | 00110110 | 36 |
55 | 00110111 | 37 |
56 | 00111000 | 38 |
57 | 00111001 | 39 |
58 | 00111010 | 3a |
59 | 00111011 | 3b |
60 | 00111100 | 3c |
61 | 00111101 | 3d |
62 | 00111110 | 3e |
63 | 00111111 | 3f |
64 | 01000000 | 40 |
65 | 01000001 | 41 |
66 | 01000010 | 42 |
67 | 01000011 | 43 |
68 | 01000100 | 44 |
69 | 01000101 | 45 |
70 | 01000110 | 46 |
71 | 01000111 | 47 |
72 | 01001000 | 48 |
73 | 01001001 | 49 |
74 | 01001010 | 4a |
75 | 01001011 | 4b |
76 | 01001100 | 4c |
77 | 01001101 | 4d |
78 | 01001110 | 4e |
79 | 01001111 | 4f |
80 | 01010000 | 50 |
81 | 01010001 | 51 |
82 | 01010010 | 52 |
83 | 01010011 | 53 |
84 | 01010100 | 54 |
85 | 01010101 | 55 |
86 | 01010110 | 56 |
87 | 01010111 | 57 |
88 | 01011000 | 58 |
89 | 01011001 | 59 |
90 | 01011010 | 5a |
91 | 01011011 | 5b |
92 | 01011100 | 5c |
93 | 01011101 | 5d |
94 | 01011110 | 5e |
95 | 01011111 | 5f |
96 | 01100000 | 60 |
97 | 01100001 | 61 |
98 | 01100010 | 62 |
99 | 01100011 | 63 |
100 | 01100100 | 64 |
101 | 01100101 | 65 |
102 | 01100110 | 66 |
103 | 01100111 | 67 |
104 | 01101000 | 68 |
105 | 01101001 | 69 |
106 | 01101010 | 6a |
107 | 01101011 | 6b |
108 | 01101100 | 6c |
109 | 01101101 | 6d |
110 | 01101110 | 6e |
111 | 01101111 | 6f |
112 | 01110000 | 70 |
113 | 01110001 | 71 |
114 | 01110010 | 72 |
115 | 01110011 | 73 |
116 | 01110100 | 74 |
117 | 01110101 | 75 |
118 | 01110110 | 76 |
119 | 01110111 | 77 |
120 | 01111000 | 78 |
121 | 01111001 | 79 |
122 | 01111010 | 7a |
123 | 01111011 | 7b |
124 | 01111100 | 7c |
125 | 01111101 | 7d |
126 | 01111110 | 7e |
127 | 01111111 | 7f |
128 | 10000000 | 80 |
129 | 10000001 | 81 |
130 | 10000010 | 82 |
131 | 10000011 | 83 |
132 | 10000100 | 84 |
133 | 10000101 | 85 |
134 | 10000110 | 86 |
135 | 10000111 | 87 |
136 | 10001000 | 88 |
137 | 10001001 | 89 |
138 | 10001010 | 8a |
139 | 10001011 | 8b |
140 | 10001100 | 8c |
141 | 10001101 | 8d |
142 | 10001110 | 8e |
143 | 10001111 | 8f |
144 | 10010000 | 90 |
145 | 10010001 | 91 |
146 | 10010010 | 92 |
147 | 10010011 | 93 |
148 | 10010100 | 94 |
149 | 10010101 | 95 |
150 | 10010110 | 96 |
151 | 10010111 | 97 |
152 | 10011000 | 98 |
153 | 10011001 | 99 |
154 | 10011010 | 9a |
155 | 10011011 | 9b |
156 | 10011100 | 9c |
157 | 10011101 | 9d |
158 | 10011110 | 9e |
159 | 10011111 | 9f |
160 | 10100000 | a0 |
161 | 10100001 | a1 |
162 | 10100010 | a2 |
163 | 10100011 | a3 |
164 | 10100100 | a4 |
165 | 10100101 | a5 |
166 | 10100110 | a6 |
167 | 10100111 | a7 |
168 | 10101000 | a8 |
169 | 10101001 | a9 |
170 | 10101010 | aa |
171 | 10101011 | ab |
172 | 10101100 | ac |
173 | 10101101 | ad |
174 | 10101110 | ae |
175 | 10101111 | af |
176 | 10110000 | b0 |
177 | 10110001 | b1 |
178 | 10110010 | b2 |
179 | 10110011 | b3 |
180 | 10110100 | b4 |
181 | 10110101 | b5 |
182 | 10110110 | b6 |
183 | 10110111 | b7 |
184 | 10111000 | b8 |
185 | 10111001 | b9 |
186 | 10111010 | ba |
187 | 10111011 | bb |
188 | 10111100 | bc |
189 | 10111101 | bd |
190 | 10111110 | be |
191 | 10111111 | bf |
192 | 11000000 | c0 |
193 | 11000001 | c1 |
194 | 11000010 | c2 |
195 | 11000011 | c3 |
196 | 11000100 | c4 |
197 | 11000101 | c5 |
198 | 11000110 | c6 |
199 | 11000111 | c7 |
200 | 11001000 | c8 |
201 | 11001001 | c9 |
202 | 11001010 | ca |
203 | 11001011 | cb |
204 | 11001100 | cc |
205 | 11001101 | cd |
206 | 11001110 | ce |
207 | 11001111 | cf |
208 | 11010000 | d0 |
209 | 11010001 | d1 |
210 | 11010010 | d2 |
211 | 11010011 | d3 |
212 | 11010100 | d4 |
213 | 11010101 | d5 |
214 | 11010110 | d6 |
215 | 11010111 | d7 |
216 | 11011000 | d8 |
217 | 11011001 | d9 |
218 | 11011010 | da |
219 | 11011011 | db |
220 | 11011100 | dc |
221 | 11011101 | dd |
222 | 11011110 | de |
223 | 11011111 | df |
224 | 11100000 | e0 |
225 | 11100001 | e1 |
226 | 11100010 | e2 |
227 | 11100011 | e3 |
228 | 11100100 | e4 |
229 | 11100101 | e5 |
230 | 11100110 | e6 |
231 | 11100111 | e7 |
232 | 11101000 | e8 |
233 | 11101001 | e9 |
234 | 11101010 | ea |
235 | 11101011 | eb |
236 | 11101100 | ec |
237 | 11101101 | ed |
238 | 11101110 | ee |
239 | 11101111 | ef |
240 | 11110000 | f0 |
241 | 11110001 | f1 |
242 | 11110010 | f2 |
243 | 11110011 | f3 |
244 | 11110100 | f4 |
245 | 11110101 | f5 |
246 | 11110110 | f6 |
247 | 11110111 | f7 |
248 | 11111000 | f8 |
249 | 11111001 | f9 |
250 | 11111010 | fa |
251 | 11111011 | fb |
252 | 11111100 | fc |
253 | 11111101 | fd |
254 | 11111110 | fe |
255 | 11111111 | ff |
256 | 100000000 | 100 |