戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2018年 秋期 午前(科目A)01


問題文

16進数の小数0.248を10進数の分数で表したものはどれか。

選択肢

(正解)

16進数の小数0.248を10進数の分数で表したものはどれか。【午前2 解説】

要点まとめ

  • 結論: 正解は エ: 。16進小数 0.248₁₆ を 10進の分数に直すと になります。
  • 根拠: 16進小数は各桁が に対応し、 を通分して約分した結果です。
  • 差がつくポイント: 分母は )で通分し、約分は2の冪で簡単にできる点を素早く見抜くこと。

正解の理由

16進数の小数部はそれぞれの桁が16の負のべき乗に対応します。
具体的に です。これを分数に直すと となり、共通分母 に通分すると分子は です。
よって元の値は で、 より約分して となります。従って正解は エ: です。

よくある誤解

  • 16進の小数を単に小数点以下の数字列をそのまま10進小数と誤解する(例:0.248 を 0.248 と扱うミス)。
  • 桁ごとの重みを16の負乗でなく10の負乗や他の基数で考えてしまう(基数を間違える)。
  • 通分・約分を省略して のまま答える、または約分の際の最大公約数を見落とすミス。

解法ステップ

  1. 各桁の重みを確認:16進小数の桁は左から
  2. 桁ごとに積を計算:
  3. 分数表現にする:
  4. 共通分母 に通分し分子を足す:
  5. 約分して最簡分数にする:
(代替法)各桁を順に の分数として扱うのが最短で確実です。

選択肢別の誤答解説

  • ア:
    値は (10進)で、題意の値とは大きく異なります。16進分解とは無関係な値。
  • イ:
    値は (10進)に近いが、これは「十進小数0.248」を分数にした結果であり、16進の 0.248₁₆ とは別物です。基数を混同した典型ミス。
  • ウ:
    この分数は で、0.248₁₆ の正しい値 と異なります。通分や桁の重みの計算ミスで出やすい値。
  • エ:
    正しく通分して約分した結果で、上の手順どおりに計算すると得られる唯一の正解です。

補足コラム

  • 覚えておくと便利な性質:16進の分母は常に なので、約分後の分母は2の冪になります。16進小数は2進分数と親和性が高く、ビット単位での扱いが容易です。
  • 実務的には、個々の桁を足す方法か、文字列として読み取ってプログラムで Fraction ライブラリを使う方法が確実です。
コード例(16進小数文字列を分数に変換する Python)
from fractions import Fraction

def hex_frac_to_fraction(s):  # s like "0.248"
    assert s.startswith("0.")
    digits = s[2:]
    numerator = 0
    denom = 16 ** len(digits)
    for i, ch in enumerate(digits):
        val = int(ch, 16)
        numerator = numerator * 16 + val
    return Fraction(numerator, denom)

print(hex_frac_to_fraction("0.248"))  # -> Fraction(73, 512)

FAQ

Q1: なぜ分母は 16^3 を使うのですか?
A1: 小数部が3桁(2,4,8)なので最小公倍数として で通分できます。各桁は に対応します。
Q2: 16進小数は必ず有限小数になりますか?
A2: 16は2の冪なので、基数10での有限小数とは無関係です。16進では有限桁なら必ず有限ですが、10進で表すと有限とは限りません(ただし分母が2の冪に約分されるため、10進の有限小数になるには分母が2と5の冪のみである必要があります)。
Q3: 長い16進小数の変換で効率的なやり方は?
A3: 通分・約分の方法が確実で速いです。プログラムでは分数ライブラリを用いるか、繰り返し16倍して整数部分を取り出す方法(乗算法)も使えます。

関連キーワード: 16進数、基数変換、16進小数、分数表示、約分、通分、2の冪、桁位置法則
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について