2進数、8進数、10進数、16進数の話

ここ2週間ほど気持ちがブルーだった哲さん。でも、今週は
納品も済んで、軽やかに出かけてきた。愛犬ロボも、週一の
散歩を楽しみにしているよう。最も、ロボは、啓二さん宅で
もらえる食べ物が目当てかも知れないが。哲さんの家では、
ドッグフードだけなので、違う食べ物がある啓二さんの処は
魅力があるのかも知れない。
哲  :こんちは。
啓二:ほい。来たか。
哲  :今日は、女性はいないのか。
啓二:海外旅行だと。海外旅行に行く金があるなら、料理を習って
      腕を磨いた方が、いい男がつくのになあ。
      今日は、2進数、8進数、10進数、16進数の話だ。
哲  :なんでだよ。もっと操作や作り方の話をしてくれよ。
啓二:基本が肝心なんだ。それに、マイコンでLEDやスイッチを
      使うときには、2進、8進、10進、16進の表現を即座に
      他の進数に変換できることが必要なんだ。
哲  :そうかな。
啓二:まずは、2進の3けたを8進の1けたに相互に変換できるかな。
哲  :簡単、簡単。

      これでいいかな。
啓二:上出来。次に、2進の4けたを16進の1けたに相互変換できるか。
哲  :簡単、簡単。

      これでいいかな。
啓二:じゃあ、2進の4けたを一まとめにして何と呼ぶ。
哲  :ええ、バイトの半分に用語があるのか。
啓二:あるよ。あのIntel4004は、4ビットマイコンだったんだぞ。
      2進の4けたを一まとめにした用語がないはずないだろう。
      ニブル(nibble)というんだよ。あまり、出てこないけれど。
哲  :2進の1けたは、ビット(bit)でいいだよな。
啓二:いいよ。でも、ビットは略語なんだ。Binary Digitの略だ。
      直訳すると2進数1けたになる。長いのでBITとしたんだ。
哲  :2進の8けたは、バイト(Byte)だよな。
啓二:うん、そう。でも2進の8けたは、オクテットと呼ぶこともある。
      通信用語だけれど。バイトは、2ニブルだけれどオクテットを使う
      と、2進の8けたで一つの情報を表現すると規定されて、分割は
      許さないんだ。
哲  :そうそう、ワード(Word)っていうのは、2バイトだよなあ。
啓二:ワード(Word)が、2バイトとしてよいときと、そうでないとき
      があるんだ。1ワード=12ビットとするようなコンピュータ
      があったりする。これは、一度に扱えるビットサイズを表現し
      PICでは、1ワード=12ビット、14ビット、16ビットの
      マイコンファミリーを形成している。
      IBMやIntelのマニュアルでは、1ワード=16ビットだが
      本来は、そのマイコンが一度に扱えるビットサイズを指す用語
      なので、どっちで利用しているのかを、文脈から判断しないと
      ならない。
哲  :定義を重んじるコンピュータの世界でも、曖昧なところもある
      んだなあ。
啓二:2進の3けたを使うことは少ないように思えるけれど、意外に
      使うことは多いんだ。例えば、交通信号。赤、黄、緑として、
      1回の動作サイクルを表現すると、(赤黄緑)=(100)→
      (010)→(001)→(010)→(100)となる。
      また、光の3原色はR、G、Bでこれを発光するフルカラーの
      LEDなんかの制御のときは、重宝だよ。
哲  :C言語に8進の表現の%Oがあるなあ。
啓二:あれは、DECのコンピュータを利用したからさ。DECの
      ミニコンピュータのアセンブラを機械語にするときに、2進
      の3けたごとに区切って表現したことが、C言語の仕様まで
      影響したんだ。
哲  :8進と16進の表現があるのは、何故かな。
      統一してくれた方が、嬉しいのに。
啓二:3ビット表現と4ビット表現では、1けたに含められる情報量
      に違いがある。3ビットならば8通り、4ビットならば16通り
      で、情報量が異なるんだ。だから、長いけたの2進を圧縮して
      表現するには、16進が便利なんだ。
哲  :相互変換の計算はやらないのか。
啓二:相互変換の表が頭に入っているならば、必要ないよ。
      そんなことをやるよりも、もっと大事なことがあるから。
哲  :何だ、それは。
啓二:論理演算だよ。論理和、論理積、排他的論理和の3つは必要。

      これらを活用すると、プログラムが短くなったり、高速に
      なることもある。また、多数ビットの積計算が必要なとき
      にも使える。
哲  :論理和と論理積は簡単に覚えられるんだが、排他的論理和は
      いつもわからなくなるんだ。何か覚え方があるのかなあ。
啓二:生物と同じだよ。
哲  :何だ、それ。
啓二:だから、生物と同じだって。同じ性では子供ができないのさ。
      0をメス、1をオスとすると、子供ができるのは、0と1、
      1と0、この2つの組み合わせしかないだろう。
哲  :本当だ。
啓二:算術演算も論理演算も身の周りにあるのさ。そのアナロジー
      がわかると、覚えることは少なくても済むよ。
哲  :論理演算の例は、他に何かあるのかい。
啓二:あるよ。40℃のお湯と40℃のお湯を混ぜても、40℃のお湯の
      ままだろう。これは、論理和の1+1=1と同じだろう。
哲  :なるほど。そうやって、覚える量を減らしてたのか。
啓二:覚えるだけでは、忘れたときに困るでしょう。同じ覚えるにしても、
      忘れにくく、思い出せるように工夫しておくのさ。今日も、お疲れ。

戻る