16進数←→2進数

16進数から2進数へ変換する。これは、アセンブラ上がりのプログラマならば誰でも出来る。そもそも、対応は16コしかないから1分もあれば覚えられる。..とぐらいに軽い気持ちで思っていた。しかし、よくよく考えてみると、そう簡単でも無いんじゃないかと気づいた。


こんなことをわざわざ言うのは、それをツール化しようと言う話があったからだ。(id:higepon:20050122) 他のへたれさんが言うならまだしも、MonaOSid:higeponさんが言うんでは、聞き流すわけにもいかない。


私がどうやって、この16進数←→2進数の変換表を覚えたのか思い返してみるに、小学4年生のときに買ってもらったPC-6001で、グラフィックキャラクタを256×192(bpp=1なのでモノクロ)のグラフィックスクリーンに書くときだったと思う。最初は方眼紙の上で8×8のキャラクタを描いて、それを見ながら16進数8バイトに変換していたのだけれど、しばらくやっているうちに方眼紙がなくても頭のなかで8バイトを書き出せるようになった。


16進数8バイト(16文字)が、方眼紙を塗りつぶした8×8のキャラクタに見えてきたのだ。


そのあと、MZ系のRGBの組み合わせで8色出せるパソコンに触れたときも、そのころの経験が生きて、しばらくやっていると頭のなかで8×8の8色のキャラクタを描いて即座に16進数24バイトが言えるようになった。当時のパソコンは解像度が粗かったので、ドットがくっきり見えていたし、色もカラーパレットが無かったので、R,G,Bの3原色と、それらの二つを1:1で混ぜた色(シアン、マゼンタ、イエロー)、全部混ぜた色(白)、まったく混ぜない色(黒)しかなかった。だから、私はモニター上に映る8×8の8色のキャラクタを見ると、即座に頭のなかに16進数24バイトが浮かぶようになった。


そう考えてみると、16進数←→2進数の対応が私の頭のなかでハッキリしてきたのは、アセンブラ時代でなくて、このころじゃないかなぁという気はする。最近、アセンブラを使うと言っても、C言語の延長で(本当はアセンブラの延長に高級言語があるわけでちょっと順番がおかしい気はするけど)、アセンブラが無償で使えることが多く、ニーモニックバイトコードとの対応を覚えたりする人は稀だろう。いまどきの人はアセンブラをやったところで、16進数←→2進数の対応表なんて覚えない。覚える必要がないのだ。


こういう風にツールが発達するごとに、人が記憶すべきことは減っていくのはマズイんじゃないのかと思う。私は、あえて他人の電話番号を覚えたり、電卓を使わずに計算したりしている。そうでもしないと自分が機械に蝕まれてしまうように思えて怖いからだ。