コンピュータは様々な情報を扱います。
写真、音楽、テキスト等、種類を挙げれば数えきれませんが、
実はこれらの情報は、単なる数値の塊でしかありません。
パソコンに写真や音楽を保存し、視聴する事ができますが、
それはあくまで各アプリケーションが、
数値の塊を写真や音楽として扱っているだけです。
どんな情報であったとしても、一部の天才だけが理解している様な、
よく分からない物で作られている訳ではないという事ですね。
ただ一点留意するべき事があります。
それは「コンピュータが扱いやすい数値の形が存在する」という事です。
人は普段、0 から始まり 9 の次で桁が一つ上がるという数値の形を利用しています。
所謂「10 進数」ですが、実はこの形は人が扱いやすい数値の形であって、
コンピュータにとってはそうではないのです。
コンピュータは最終的に全ての情報を 0 と 1 の集合として扱っています。
その為、コンピュータにとって最も扱いやすい数値の形は「2 進数」です。
さらに「2 進数」と相互に変換しやすい形として、
「8 進数」「16 進数」という形が存在します。
この中でも特に「16 進数」はコンピュータを扱う中で頻繁に目にします。
プログラムを行う上でも、ビット制御やデータ解析といった事を行う為、
これら進数に関する理解は必須となります。
下記は、進数変換方法の一例となります。
進数変換
2進数から10進数へ
2進数の値を X に置き換えると、以下の手順で変換できます。
- X の最上位の桁から状態を確認していく
- 「1」になっていたら、2^(最上位 – 進んだ数)を求めて加算する
- 最下位であれば終わり、違う場合は下位に進んで ② に戻る
10進数から2進数へ
10進数の値を X に置き換えると、以下の手順で変換できます。
最下位の桁から埋めていきます。
- X を2で割った余りを、その桁に値にする
- 上位の桁に進む
- X を2で割った値で X を上書きする
- X がゼロになれば終わり、ゼロでなければ ① に戻る
16進数から10進数へ
やり方は「2進数から10進数へ」と基本同じです。
気を付ける点は、2進数と違い、桁の値が係数になる点です。
10進数から16進数へ
やり方は「10進数から2進数へ」と同じです。
2進数の場合は、余りや割り算をする際に「2」で行いましたが、
それを「16」に変える形になります。
16進数から2進数へ
16進数の値を 0xXXXX に置き換えると、以下の手順で変換できます。
- 「XXXX」を1桁ずつ分解する
- 1桁分(0~F)を10進数(0~15)に置き換える
- 上記を4桁の2進数に変換する
- 変換した2進数を順につなげる
2進数から16進数へ
2進数の値を X に置き換えると、以下の手順で変換できます。
- X を最下位から4桁ずつ分解する
- 分割された4桁の2進数を10進数(0~15)に置き換える
- 上記を1桁の16進数(0~F)に変換する
- 変換した16進数を順につなげる
負数の進数変換
負数(マイナス)の進数変換には、補数を利用します。
下記二つの補数を把握しておく必要があります。
1 の補数:2 進数の 1 と 0 を反転させた値
2 の補数:1 の補数に 1 を加えた値
なお、その 2 進数が負数なのかかどうかは、2 進数からだけでは判断できません。
必ず「符号付き or 符号なし」の指定が必要になります。
「符号付き」の場合、最上位の値が「プラスかマイナスか」を指すようになります。