プログラムで扱う数値
パソコンなどの電子機器では基本的に0か1の値で全てを判断しています。
なのでプログラム上の数値も 0 と 1 で全てが構成されています。
仕組みを知らない人は 0 と 1 だけでどうやって計算を行うの?
という疑問が出るかと思います。
そこで使われるのが2進法です。
2進法とは 0 と 1 だけで数値を表す仕組みです。
パソコンなどの機器は基本的に2進法で処理が行われています。
進法の種類
進法 | 説明 | 例 |
---|---|---|
2進法 | PC等の電子機器が扱われる数値の形式です。 0 と 1 の2種類で数値を表すので2進法と呼びます。1 を超えると 0 に戻り1つ上の桁の数値が増えます。 PC上での数値は内部的にこの形で扱われています。ただし2進法で表記すると人には直観的に理解することができません。 そのためプログラムのコード上では10進法や16進法で記述します。 |
0011 1101 0011 1010 1111 1111 |
10進法 | 最も人が理解しやすい数値の形式です。 0 ~ 9 までの10種類で数値を表すので10進法と呼びます。9 を超えると 0 に戻り1つ上の桁の数値が増えます。人が理解しやすい数値なのでプログラム上でも多用します。 |
3 13 58 255 |
16進法 | 2進法と親和性の高い数値の形式です。 0 ~ 9 と A ~ F (9の次がAとなる)の16種類で数値を表すので16進法と呼びます。F を超えると0 に戻り1つ上の桁の数値が増えます。PC上で2進法的な考えの計算を行う場合は基本的に16進法で数値を記述します。 ※2進法と16進法の親和性については後述します。 |
3 D 3A FF |
これらがプログラムでよく使用される進法です。
基本的に2進法で直接数値を記述することはありませんが、2進法を利用した計算は頻繁に出てくるので必須の知識となります。
それでは次の項でそれぞれの変換方法を学んでいきましょう!
10進法→2進法
2進法は2になるたびに桁を上げて0と1で全てを表します。
4 を2進法で表すと 100 となります。
桁が上がると桁が単純に2倍になるので次のような計算式になります。
※桁が上がるごとに2のn乗の値になります。
1 * 4 + 0 * 2 + 0 * 1
太字の部分が2進法の 0 と 1 の箇所です。
どこまで桁が増えても計算方法は一緒なので落ち着いて考えれば意外と簡単なんです!
37 を2進法で表すと 100101 になります。
計算式で表すと下記です。
1 * 32 + 0 * 16 + 0 * 8 + 1 * 4 + 0 * 2 + 1 * 1
数値が大きくなっても単純ですよね!
簡単な変換方法
10進法から2進法への変換はもう少し簡単にする方法があります。
考え方は簡単でひたすら2で数字を割っていくだけです。
では今回は 11 を2進法に変換してみましょう!
11 / 2 = 5 で余りが 1
ここで出た余りを残しておきます。
更に割り算を続けます。
5 / 2 = 2 で余りが 1
最初の1と合わせて 11
2 / 2 = 1 で余りが 0
これも合わせて 011
1 / 2 = 0 で余りが 1
これで全ての余りを合わせて 1011
この 1011 が2進法での 11 を表す値になります!
ただ2で割り算をして余りを繋げただけです。
2進法への変換は凄く簡単だと思いませんか?
2進法→10進法
2進法から10進法への変換も難しいことはありません。
単純に掛け算を繰り返していくだけです。
1101 なら次のように計算していきます。
1 * 2⁰ = 1 * 1 = 1
0 * 2¹ = 0 * 2 = 0
1 * 2² = 1 * 4 = 4
1 * 2³ = 1 * 8 = 8
桁が上がるたびに2倍した値と 0、1 の値を掛け算していきます。
これらの合計が10進法の値となります。
1101 = 1 + 0 + 4 + 8 = 13
これも落ち着いて計算していけば難しくないですね!