16進数文字列を2進数文字列へ変換

16進数文字列を2進数文字列へ変換

16進数文字列を2進数文字列へ変換にまつわる興味深い視点を詳しく紐解きます。

整数部分の変換をクリアした学習者が次に直面する高いハードルが、小数点を含む数値の扱いです。しかし、小数の場合でも本質的なルールはまったく変わりません。唯一厳格に守らなければならないのは「基数点(小数点)を起点として左右へ展開する」という鉄則です。

まずは16進数の小数から2進数への変換を具体例で検証します。例題として「0.A8」を取り上げます。

  1. 整数部は「0」なのでそのまま「0.」と記述します。
  2. 小数第1位の「A(10)」を4ビット化します(8 + 2 → 1010)。
  3. 小数第2位の「8」を4ビット化します(8 → 1000)。
  4. そのまま連結すると「0.10101000」となります。
  5. 末尾にある無意味なゼロを整理すれば「0.10101」と確定します。

逆に、実務や試験でさらにミスが多発するのが2進数から16進数への逆変換方法です。ここには絶対に引っかかってはならない「ゼロ埋めの罠」が潜んでいます。

たとえば「110101.011」という2進数を16進数に変換する場合を考えます。やってしまいがちな致命的ミスは、左端や右端から無作為に4桁ずつ区切ってしまうことです。

正しい手順は、必ず「小数点から外側に向かって4桁ずつ区切る」ことです。

  • 整数部(小数点の左側):「110101」を右(小数点の直前)から区切ると「11」と「0101」になります。左端の桁が足りないため、左側にゼロを補って「0011(=3)」と「0101(=5)」にします。つまり整数部は「35」です。
  • 小数部(小数点の右側):「011」を左(小数点の直後)から数えます。3桁しか存在しないため、右端にゼロを足して「0110」にしなければなりません。これをうっかり「0011」と誤読すると3になってしまいますが、正しくは「0110(=6)」です。

情報処理技術者試験の過去問解説でも、この小数部右端のゼロ埋め忘れを突いた引っかけ選択肢が頻出しています。合体させた正解は「35.6」です。基数点を防波堤に見立て、左右それぞれ外側に向かって4桁を束ねる意識を徹底してください。

山下 哲也
著者

山下 哲也

デジタルガジェットとスマート家電の検証記事を多数執筆。失敗しないモノ選びを提案します。