2進数ってそんなに大層なモンですかね?

2進法の特殊性

今のコンピューターが内部で2進数表現を使用しているのは、私見では深い意味とかは無い。電気回路という高速スイッチングができるものを使って計算機を実現した時に、ON/OFFに1/0を対応付けるのが自然だった、それだけのことだろう。もしも3状態の保持と高速スイッチングが可能な素材があったら3進数を使った計算機の方が2進数よりも高効率だという推論があるからだ。

コンピュータなどの計算機械で、N進記数法で一桁を表現・記憶するコストがNに比例すると仮定する。すると、最大値Mまでを表現・記憶できるようにするためのコストは、一桁分のコストに必要な桁数を掛けたものとなり、具体的には N×\log_NMである。この値が極小になるのはNネイピア数eの時であるが、e進法は通常の数の表現には全く適さない。前後の整数では、二進と四進の場合が同じで、三進の場合が若干だが小さな値となる。よって前述の仮定の下では三進法の採用が最も経済的ということになるが、三値素子といったようなものは、特に電子的には二値素子の扱いやすさとは比べるべくもなく、稀である。
三進法#経済性-Wikipediaより

ライプニッツは知らなかっただろうけど、中国には『太玄経』という『易経』を模して作られた天地人の三才を使って三進法に基づいて書かれた経書がある。ライプニッツがこの『太玄経』の存在を知ったとしたら、どのような反応をしたか非常に興味がある。ただ管見ではこの『太玄経』を使って占いをしている人はいないようだ。

ということで「2進数スゴイ」というのは、私にいわせれば「お前がそう思うんならそうなんだろう お前ん中ではな」てことだ。まあ2進数は電子回路で実現し易いの他に、ちょっとした手品のネタになることもある。2進数の0/1は無/有に変換できるので、リストにある数/無い数という分類が出来て、それを使った手品がある。

まず1~7までの数を心に思い浮かべて欲しい。次にその数が、以下の3つの数のリストにあるかないかを見て欲しい。思い浮かべた数が入っているリストの最初の数を足すと思い浮かべた数になる。

リスト11 3 5 7
リスト22 3 6 7
リスト34 5 6 7

つまりリスト1は1の位のビットの立っている数、リスト2は2の位のビットの立っている数、リスト3は4の位のビットの立っている数になっているので、存在するリストの左端の数である位の数を足し合わせれば元の数になるというわけだ。面倒臭いので1~7にしたけれども6つのリストか表でも作って64の位のビットの立っている数まで作れば1~100くらいまでは簡単に対応できる。まぁ2進数て、これくらいのモノですよ。