2017年6月9日金曜日

n進数の話(続き)

今度は違う人から質問が来ました。
その人は「16進数」が知りたいらしいです。

「いやいや2進数と同じでしょ!」と思うのですが、わからない気持ちも理解でします。

前回のBLOGにも書いたように
10進数は「じゅう」って言ったら負け。
2進数は「に」って言ったら負け。
同じように考えれば16進数は「じゅうろく」って言ったら負けなだけなのです。

その人曰く
 人間界には0~9の10個の数字しか存在しない。
 2進数の場合0と1を使えば良い。
 8進数の場合0~7を使えば良い。
 ところが16進数の場合0~9では表現できない!
 0~15だと、既に2桁になってるし!
 ってかAとかBとか英文字でてきて意味わかんないし!
との事。

Aは一文字、つまり一桁ですよね。
B、C、D、E、Fも一桁ですよね。
16進数の場合0~F迄で16個の数字を表現します。
0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F
16個あるでしょ?

Fの次は?
Gではありません。
16個目の次は桁上がりです。
つまり10です。

下記、左が10進数で右が16進数の数字です。
0=0  1=1  2=2  3=3  4=4  5=5
6=6  7=7  8=8  9=9 10=A 11=B
12=C 13=D 14=E 15=F 16=10
16の所で桁上がりして10になりました。
念の為、もう少し途中経過を書きますね。
43=2B
94=5E
ですね。

こんなのどうやって計算するの!?

落ち着いて下さい、簡単です。

まず16進数を10進数に直す方法を書きます。
例として16進数の5Eを10進数にしてみましょう。
まず上の桁が5ですね、つまり16が5個集まっているのですよ。
まず16進数の50を10進数に直すと「16×5」で80です。
あとは下の桁のEですが…これは数えるしかないですね。
9、A、B、C、D、E = 9、10、11、12、13、14
16進数のEは10進数の14ですね。
さっきの80(50の10進数)と、今の14(Eの10進数)を足すと94です。
なので16進数の5Eを10進数に直すと94という事です。

A~Fを英文字として認識するのではなく、9以上の一桁の「数字」として認識すれば良いのですよ。
応用すると「20進数の場合は0~J迄を使えば良い」感じですね。

わかりましたか?
これで10進数以上も対応できますね!