目次
2進数とは
2進数って何のためにあるの?
コンピュータが扱う最小単位は「ビット」(bit)です。1ビットで表現できる数字は、「0」と「1」の2つだけであり、この「0」と「1」という2個の数字で数をあらわすのが2進数です。
コンピュータは、この「0」と「1」の集まりしか理解できません。そのためコンピュータでは、2進数の集まり(バイナリデータ)でデータを表現します。
私たち人がものを数える時には、「0」~「9」という10個の数字を使います。この10個の数字で数をあらわすことを10進数といいます。
ポイント
- 人が扱うのが「10進数」
- コンピュータが扱うのが「2進数」
スポンサーリンク
2進数から10進数への変換
2進数を10進数へ変換するには、各桁の数に対して「重み」をかけ、それを合算することで求めることができます。
「重み」とは、1桁あがるごとに増えていく(2進数の場合は2倍)値のことです。
例えば、次のように2進数の桁が1桁あがることに「2のn乗」のnが増えていきます。
- 2進数「1」→ 2の0乗 → 10進数「1」
- 2進数「10」→ 2の1乗 → 10進数「2」
- 2進数「100」→ 2の2乗 → 10進数「4」
- 2進数「1000」→ 2の3乗 → 10進数「8」
上記は、2進数「1011」を10進数へ変換するイメージ図です。
2進数から10進数へ変換する手順は次の通りです。
【手順1】 各桁の数に「重み」をかけた数を計算する。
- 4桁目:1 × 2の3乗 = 8
- 3桁目:0 × 2の2乗 = 0
- 2桁目:1 × 2の1乗 = 2
- 1桁目:1 × 2の0乗 = 1
【手順2】手順1で算出した値を合算すると10進数の値となる。
8 + 0 + 2 + 1 = 11
10進数から2進数への変換
10進数から2進数へ変換するには、10進数の値を2で割り算していくと求めることができます。
以下は10進数「11」を2進数へ変換するイメージ図です。
10進数から2進数へ変換する手順は次の通りです。
【手順1】 変換したい10進数を2で割り商を下に、余りを右に書く。
【手順2】商をさらに2で割り、商が0になるまで割り算を繰り返す。
11 ÷ 2 = 5 余り 1
5 ÷ 2 = 2 余り 1
2 ÷ 2 = 1 余り 0
1 ÷ 2 = 0 余り 1
【手順3】最後に余りを下から順に読むと2進数の値となる。
8進数と16進数
コンピュータは、2進数である「0」と「1」の集まりを使用します。しかし「0」と「1」しか使えない表記では、数をあらわすのに桁数がかさんでしまいます。
そこで、1桁である程度まとまった区切りの数をあらわすことができ、コンピュータとも相性の良い「n進数表記」が存在しています。その中でも代表的なものに「8進数」と「16進数」があります。
コンピュータの世界では、8ビットをひとまとまりにした「バイト」(byte)という単位が一般的です。この「バイト」をあらわす数として16進数がよく用いられています。
2進数、10進数、8進数、16進数の対応表
10進数の0~16までの整数を2進数、8進数、16進数に変換した対応表は次の通りです。
10進数 | 2進数 | 8進数 | 16進数 |
0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 |
2 | 10 | 2 | 2 |
3 | 11 | 3 | 3 |
4 | 100 | 4 | 4 |
5 | 101 | 5 | 5 |
6 | 110 | 6 | 6 |
7 | 111 | 7 | 7 |
8 | 1000 | 10 | 8 |
9 | 1001 | 11 | 9 |
10 | 1010 | 12 | A |
11 | 1011 | 13 | B |
12 | 1100 | 14 | C |
13 | 1101 | 15 | D |
14 | 1110 | 16 | E |
15 | 1111 | 17 | F |
16 | 10000 | 20 | 10 |
スポンサーリンク
2進数から8進数への変換
2進数を8進数へ変換するには、2進数を3桁ごとに区切り、この区切り単位で10進数に直すことで8進数を求めることができます。
上記は、2進数「1011」を8進数へ変換するイメージ図です。
2進数から8進数へ変換する手順は次の通りです。
【手順1】 2進数を3桁ごとに区切る。(3桁ない所には0を補う)
1011
↓
001 と 011 に分ける
【手順2】手順1で区切った、区切り単位で10進数を求める。
2進数「001」→ 10進数「1」
2進数「011」→ 10進数「3」
【手順3】手順2で求めた10進数を連結すれば8進数の値となる。
10進数「1」と「3」を連結する
↓
8進数「13」
2進数から16進数への変換
2進数を16進数へ変換するには、2進数を4桁ごとに区切り、この区切り単位で10進数に直すことで16進数を求めることができます。
上記は、2進数「10011011」を16進数へ変換するイメージ図です。
2進数から16進数へ変換する手順は次の通りです。
【手順1】 2進数を4桁ごとに区切る。(4桁ない所には0を補う)
10011011
↓
1001 と 1011 に分ける
【手順2】手順1で区切った、区切り単位で10進数を求める。
2進数「1001」→ 10進数「9」
2進数「1011」→ 10進数「11」
【手順3】手順2で求めた10進数を16進数表記に直す。
10進数「9」 → 16進数「9」
10進数「11」 → 16進数「B」
【手順4】手順4で求めた16進数を連結する。
16進数「9」と「B」を連結する
↓
16進数「9B」
8進数から2進数への変換
8進数から2進数へ変換する手順は次の通りです。
【手順1】8進数をバラバラ(2進数から8進数を求めた時と逆のことをする)にして10進数に戻す。
8進数「15」
↓
10進数「1」と「5」
【手順2】手順1の10進数から2進数(3桁の2進数※3桁ない場合は0で補う)を求める。
10進数「1」 → 2進数「001」
10進数「5」 → 2進数「101」
【手順3】手順2で求めた2進数を連結する。
2進数「001」と「101」
↓
2進数「001101」
16進数から2進数への変換
16進数から2進数へ変換する手順は次の通りです。
【手順1】16進数をバラバラ(2進数から16進数を求めた時と逆のことをする)にして10進数に戻す。
16進数「9B」
↓
10進数「9」と「11」
【手順2】手順1の10進数から2進数(4桁の2進数※4桁ない場合は0で補う)を求める
10進数「9」 → 2進数「1001」
10進数「11」 → 2進数「1011」
【手順3】手順2で求めた2進数を連結する
2進数「1001」と「1011」
↓
2進数「10011011」
文字コード
コンピュータは、この「0」と「1」の集まりしか理解できません。では「A」や「あ」などのような文字をどうやって表示しているのでしょうか。
コンピュータに文字を表現させているのは「文字コード」と呼ばれるものです。
文字コードは、コンピュータが理解できる「0」と「1」の集まりと、文字の対応表を作り、コンピュータはその対応表通りに文字を表現しています。