2進数・8進数・16進数の試験問題への適用
ここでは、複数の基数が混在する設問を解きます。変換のたびに10進数を経由する方法に加え、2進数と8進数・16進数の桁の対応を使うと計算を短くできます。小数点の位置、固定の桁数、符号の指定を読み落とさないことが大切です。
この単元で学ぶこと
- 2進数を3ビット・4ビットに区切って変換できる
- 整数部と小数部で0を補う方向を区別できる
- 表現可能な範囲から必要ビット数を求められる
本文解説
8進数へまとめる 2³=8なので3ビットずつまとめます。101101なら101|101となり、8進数55です。整数部分は右端から区切ります。左側の不足分に0を補っても値は変わりません。区切る位置を左端から決めると、桁数が3の倍数でない場合に誤ります。
16進数へまとめる 2⁴=16なので4ビットずつまとめます。11010110は1101|0110となり、D6です。逆変換ではDを1101、6を0110に戻して連結します。下位の6を110の3ビットで表してしまうと、上位との境界が失われます。
小数部を含む例 2進数0.11を16進数へ変換するには、小数点の右側を4ビットの組にします。0.1100と右端を補えば同じ値です。1100はCなので0.C。0.0011と小数点直後に0を挿入すると値が変わり、誤った変換になります。
異なる基数の大小比較 8進数37と16進数1Fはどちらも10進数31です。数字列の見た目で37の方が大きいと判断してはいけません。慣れない場合は各桁の重みで10進数へそろえてから比較します。表記を変えても数の値は変わりません。
必要なビット数 200種類の状態を区別するには、2ⁿが200以上になる最小の整数nを探します。2⁷=128では足りず、2⁸=256なら足ります。答えは8ビットです。表せる最大の整数を問う場合は0も使うため2ⁿ−1になります。
繰上げと桁あふれ 桁数制限がなければ1111+1=10000です。一方、符号なし4ビットだけを保持し、あふれを捨てる条件なら結果は0000になります。この二つは異なる設問です。ここでの演習は、指定がない限り桁数制限なしとして計算します。
解き方の確認 16進数FFを10進数へ直すと15×16+15=255。1を足した256は16²なので16進数100です。Fを一文字の数値15として扱い、繰上げを上の桁へ反映します。最後に逆変換して元の値へ戻るか確認すると、桁の入替えを発見できます。
図解
重要ポイント
- 8進数1桁は3ビット、16進数1桁は4ビット。
- 整数部は左側、小数部は右側に不足する0を補う。
- 必要ビット数は2ⁿが状態数以上になる最小のn。
- 固定幅の演算かどうかで繰上げの扱いが変わる。
間違えやすい点
- 変換の途中で下位の組の先頭0を省略しない。
- 表現の総数と最大の整数値を混同しない。
- 別の基数の数字列をそのまま大小比較しない。
用語解説
- 基数変換
- 同じ数の値を異なる基数の記法で表すこと。
- 桁あふれ
- 指定された桁数やビット数で保持できる範囲を演算結果が超えること。
- 符号なし整数
- 用意されたビットを非負整数の値として解釈する表現。nビットでは0から2ⁿ−1。
関連教材
参考資料
教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。
確認問題の出題・採点や学習履歴の保存にはログインが必要です。