矢沢久雄
2進数で表された数は,10進数に比べて桁数が格段に多くなります。0101 1100 1111 0000のように16桁にもなったら,この原稿に打ち込むだけでも面倒です。そんな場合に,いい方法があります。16進数を使うのです。2進数を16進数に変換すると桁数が4分の1になります。変換方法はとても簡単なので,通常は16進数で表記しておいても,すぐに2進数に変換できます。16進数は便利なのです。
●16進数の仕組み
16進数とは,16で桁上がりする数の数え方です。すなわち,
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,10
のようにF(10進数で15)まで数えて,次に10と桁上がりするわけです。16進数では,10進数の15までを1桁で数えるので,A~Fという記号を数を表すものとして使います。16進数の10は,2進数と同様に「いち・ぜろ」と読みます。16進数の桁は,1桁上がるごとに16倍されます。だから16進数なのです。逆に桁が下がれば,16分の1になります。このあたりの考え方は,10進数や2進数と同様です。16進数は,2進数の代用としてよく使われます。16進数と2進数は相互に変換が容易です。16進数の1桁が2進数の4桁にピッタリ一致するからです。その理由が分かりますか?2進数の4桁は2倍を4回分ですから,
2進数の4桁=2倍×2倍×2倍×2倍=16倍=16進数の1桁
になるからです。図1●1バイトを2桁の16進数で表すダンププログラム |
●2進数から16進数への変換
2進数を16進数に変換するのは,とても簡単です。2進数を下位桁から4桁ずつに分け,それを1桁の16進数にすればよいのです。図2[拡大表示]を参考にして,皆さんもやってみてください。
4桁の2進数を16進数にするには,重みを掛けて足せばよいのです。結果が10以上になったらA~Fで表すのです。4桁までなら2進数の重みをすぐに言えますね。下位桁から「1,2,4,8」です。これを「いち・に・よん・ぱ~」と覚える人もいます。
図2●2進数の4桁=16進数の1桁 |
桁の重みを掛けて足すとは言っても,「いち・に・よん・ぱ~」に1または0を掛けて足すだけなので,4桁の2進数は「いち・に・よん・ぱ~」の4種類の数を組み合わせて足したものとなります。慣れてくると「1010は8+2=10だから16進数でA」のように暗算で変換できるようになります。
●16進数から2進数への変換
図3●16進数の1桁=2進数の4桁 |
16進数の6や5を4桁の2進数に変換するのも暗算でできるようになってください。6は「いち・に・よん・ぱ~」の4+2です。したがって6は0110となります。5は4+1なので,0101となります。簡単ですね!
さてさて,皆さんは「16進数では,どうやってマイナスの数や小数点数を表現するのだろうか?」と思われているかもしれませんね。その答えは,2進数と同じです。と言うよりは,2進数の桁数を少なくする表現手段が16進数なのです。補数表現の2進数があったとしましょう。それを4桁ずつ16進数に変換すれば,補数表現の16進数です。浮動小数点数形式の2進数があったとしましょう。それを4桁ずつ16進数に変換すれば,浮動小数点数形式の16進数です。16進数は2進数と同じものだと考えてください。
2進数をテーマとした連載は,今回で最終回です。2進数も16進数もバッチリ,マスターできましたね。理屈がわかれば,暗記することなど一つもなかったはずです。コンピュータはとても単純なものだからです。どうか単純なコンピュータと友達になってあげてください。
末筆になりましたが,連載をお読みいただいた皆さんが,ますますコンピュータ・ライフを満喫されることをお祈り申し上げます。またお会いしましょう!