見出し画像

【コンピュータ】2進数、10進数、16進数の違いとは?ビットを理解するための基礎知識

コンピュータは基本的に2進数16進数を使って情報を処理します。普段目にする数字は10進数なので、高校の数学や情報の授業で初めて習ったときは、見慣れない数字ということもあり、理解しづらかったかもしれません。

しかし、コンピュータを扱う人にとっては非常に重要な部分です。今回は、理解を深める上で、簡単な概要の部分を紹介したいと思います。

言葉の定義

説明するとややこしくなりそうなので、ここで一度言葉の定義をまとめておきます。簡単に言えば、文字です!

■ 数値:実際の
数字数値を表す文

○○進数とは

○○の数値を基数といい、次のような意味を持ちます。

1桁に使える数字の個数
次の桁に繰り上がる数値

それぞれの○○進数で、順番に補足していきます。

10進数とは

基本となる数字です。なお、数値10進数で表しています。

1桁に使える数字の個数10個(0~9)
次の桁に繰り上がる数値10

10進数では、数値と数字の両方が一致することになりますね。

0 → 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → 9 → 10

2進数とは

1桁に使える数字の個数2個(0、1)
次の桁に繰り上がる数値2

次の数字は2進数です。実際の数値は、0 → 1 → 2 → … となります。

0 → 1 → 10 → 11 → 100 → 101 → 110 → 111 → 1000

例えば、数値が「2」のときは、次のようになります。

2 = 10(2進数)

10進数では1桁の「2」で表せますが、2進数では「0」or「1」しか使えないので、「1」が次の桁に繰り上がり、2桁の「10」となります。

つまり、ある桁が表現可能な最大値を超えると、次の桁に繰り上がる。その数値が「2」ということです。

16進数とは

1桁に使える数字の個数16個(0~9、A~F)
次の桁に繰り上がる数値16

0~9までの数字に加え、A~Fまでのアルファベットを使って表します。A~Fは10進数の10~15に対応しています。

0 → 1 → 2 → … → 8 → 9 → A → B → C → D → E → F → 10

2進数を使う理由

これは、コンピュータが電気信号で情報をやり取りしているためです。

電気信号は、オンOn)とオフOff)の2つの状態を表します。部屋の電気を点けたり消したりするのと同じですね。電気信号を数値に変換することを考えると、オンなら「1」、オフなら「0」というように、2進数で簡単に表現することができます。つまり、2進数は電気信号と相性が良いのです。

そのため、2進数における1桁は、コンピュータが扱う最小単位としてビットbit)と呼ばれます。

16進数を使う理由

しかし、2進数が「0」or「1」しか使えないということは、数値が大きくなるほど、数字が長くなることを意味します。

例えば、数値が「1000」のとき、次のようになります。

1000 = 1111101000(2進数)

これは、人間がパッと見て理解するのは難しいですよね。そこで登場するのが、16進数です。実は、4桁の2進数は、1桁の16進数に置き換えることができます。ここで、4桁の2進数の最大値を見てみましょう。

1111(2進数)= 15

15」という数値は、16進数で1桁の最大値として「F」で表せます。つまり、4桁の2進数で表現できる数値であれば、1桁の16進数で表現できるということです。

1111(2進数)= F(16進数)
11_1110_1000(2進数)= 3E8(16進数)

このような理由から、2進数における8桁(8ビット)をまとめてバイトbyte)と呼ばれます。

2進数 ⇔ 10進数の変換

どちらの変換も、2のべき乗がポイントです。「n」は何桁目かを表します。2進数の1桁目から順に、計算に使います。

$${2^0,  2^1,  2^2,  …,  2^{n-1}   (1,  2,  4,  …,  2^{n-1})}$$

2進数から10進数

やり方は次の通りです。

「1」となっている桁に対応する2のべき乗を計算し、それらを合計する

例えば、2進数の「1011」を10進数に変換します。このとき、「1」となっている桁は、1桁目・2桁目・4桁目です。対応する2のべき乗は$${2^0,  2^1,  2^3}$$となるので、これらを合計します。これで数値が得られます。

$${2^0+2^1+2^3=1+2+8=11}$$

10進数から2進数

やり方は次の通りです。

その数値から引ける最大の2のべき乗で、0になるまで繰り返し引き算する

例えば、10進数の「11」を2進数に変換する場合、次のようになります。

【1】「11」から引ける最大の2のべき乗は「8(=$${2^3}$$)」となるので、2進数の4桁目は「1」になります。そして、11 - 8 = 3 となります。
【2】「3」から引ける最大の2のべき乗は「2(=$${2^1}$$)」となるので、2進数の2桁目は「1」となります。そして、3 - 2 = 1 となります。
【3】「1」から引ける最大の2のべき乗は「1(=$${2^0}$$)」となるので、2進数の1桁目は「1」となります。そして、1 - 1 = 0 となります。
【4】「0」になったので、計算終了。ほかの桁は「0」で埋めます。

4桁目・2桁目・1桁目が「1」、それ以外が「0」となるため、2進数は「1011」となります。

一般的に学校などで習うときは、ひたすら2で割っていき、その商と余りで2進数を求めるやり方がありますが、こちらの方がビット演算などの応用ができるので、優先的に紹介しました。

最後に

2進数や16進数に慣れるには時間がかかると思います。しかし、これらの基礎知識を身に付けておくことで、コンピュータがどのように動作し、どのように情報を処理するのかが理解できるようになっていきます。

しっかりと、マスターしておきましょう!

最後になりましたが、数あるサイトの中からこの記事を最後まで見てくださった方にお礼を申し上げます。どうもありがとうございました!

少しでも参考になれれば幸いです。


参考/関連ページ

【基礎理論(離散数学)】


この記事が気に入ったらサポートをしてみませんか?