2進数の求め方を説明しようとしたらできなかった話
例えば、10進数における「123」を2進数で表すとき。
はるか昔、↓こんな計算方法を習った。
画像の引用元はこちら。
k3su.xyz
先日長男から、「何でこれで求まるのか」と訊かれて説明しようとして、
言葉に詰まってしまった。はて、何でだろう。分かっていたつもりだった
のに、うまく説明できない。検索してみても、「なぜ」の部分が語られて
いないものばかり。
そこで、考えてみた。
例えば「123」を10で割ると、1桁目の数字が「余り」として現れる。
1桁目の数字を除いて100で割ると、2桁目の数字を10の位に持つ数字が
余りとして現れる。
これを繰り返せば、で割った余りとして、桁の数字を
求めることができる。
↓ 10進法の数字を10進法に変換するの図 ↓
従って、2進数の場合も同じ操作を繰り返せば、変換した結果を得ること
ができると考えた。しかし実際、この理屈だと2回目の計算ですぐに破綻
してしまう。
↓ 余りが2になるの図
なぜかと考えたが、おそらくは2進法に於いて「4で割る」こと自体が
ありえない操作なのだろうという、自分なりの結論に。
そこで、先の10進法における考え方を次のように修正した。
先の計算で出た商を、その次の桁を求めるための「割られる数」にする。
これにより、10進数であれば常に10で割ればよいし、n回目の割り算で
現れるn-1桁目の数値は常に1桁の整数として求めることができる。
これを2進数の計算に当て嵌めると、こんな感じだ。
なるほど、これが冒頭の計算方法に繋がる訳か。ここまで整理すると
自分の中で、冒頭の計算方法が「当たり前のことを言っている」こと
がわかる。そして冒頭の表記方法を考えた人、何て賢いんだと思わず
感嘆。
また、分かってしまえば何進法であっても、現在より小さな進数に
変換するときは同様に計算可能であることもわかる。
【5進数の場合】
【16進数の場合】
ということで、今日はちょっとスッキリした一日でした。
参考まで。