基本情報技術者 2010年 秋期 午前(科目A) 問01
問題文
16進小数3A.5Cを10進数の分数で表したものはどれか。
選択肢
ア:
イ:(正解)
ウ:
エ:
16進小数3A.5Cを10進数の分数で表したものはどれか。【午前2 解説】
要点まとめ
- 結論:16進小数 3A.5C は 10進の既約分数で に等しく、10進値は約 58.359375 です。
- 根拠:整数部は 、小数部は と求まり合成できます。
- 差がつくポイント:小数部は桁数に応じて分母を に揃えて通分すること、'A'=10 を忘れないことが重要です。
正解の理由
16進数 3A.5C は各桁を 16 の冪で評価して足し合わせます。整数部と小数部を分けて計算すると次のようになります。
整数部:
。
小数部:
。
したがって全体は
よって選択肢は イ が正解です。
よくある誤解
- 小数部の分母を誤って のみ(あるいは )にしてしまい、桁数に応じた を使わないミス。
- 'A' や 'C' を文字どおり扱わず数字(例: A→1)と誤認するか、16進であることを忘れて十進計算してしまうミス。
- 通分や約分の局面で 256 と 64 を混同して計算ミス(分子が ±1 されるような単純な誤差)が生じること。
解法ステップ
- 16進表記を整数部と小数部に分ける(ここでは 3A と .5C)。
- 各桁を 16 の冪で評価する(整数部は正の冪、小数部は負の冪)。
- 小数部は分母を (小数桁数 m)に揃えて通分する。
- 整数部を分母と同じに揃えて足し、分子を計算する。
- 必要なら約分して既約分数にする(今回 は既約)。
選択肢別の誤答解説
- ア: → 小数に直すと 。本来の値 と異なります。小数部を のように誤って計算した場合に生じる値です。
- イ: (正解) → 上の通り、整数部 58 と小数部 を合成した既約分数です。
- ウ: → 小数に直すと約 。正しい分母 256 にした場合の分子は であり、 は通分・加算で 1 を引き間違えた誤差から生じます。
- エ: → 小数に直すと約 。同様に通分時に +1 の誤差が入った場合に対応する誤答です。正しい分子は (=)となります。
補足コラム
- 小数部が m 桁のとき、分母は常に (16進なら)に揃えること。今回 .5C は2桁なので分母は 。
- 16進は 4 ビット単位なので、16進小数を2進小数に展開すると扱いやすい場合があります。例えば 5C_{16} → 0101 1100_{2} として、位置づけを考えると分数化が直感的にできます。
- 実務で検算するには小数に直して比較(例: 約 58.359375)するのがおすすめです。
簡単な検算用 Python(Fraction を使う例)
from fractions import Fraction
def hex_frac_to_fraction(s):
if '.' in s:
intpart, fracpart = s.split('.')
else:
intpart, fracpart = s, ''
int_val = int(intpart, 16) if intpart else 0
denom = 16**len(fracpart) if fracpart else 1
numer = int(fracpart, 16) if fracpart else 0
# 全体を分数で表す
return Fraction(int_val * denom + numer, denom)
print(hex_frac_to_fraction("3A.5C")) # -> 3735/64
FAQ
Q. なぜ分母が 64 になるのですか?
A. 小数部 .5C は2桁なので最初は分母が だが、全体を既約に約分すると になるため最終的に 64 になります。
A. 小数部 .5C は2桁なので最初は分母が だが、全体を既約に約分すると になるため最終的に 64 になります。
Q. 16進小数は必ず有限小数になりますか?
A. はい。16進で有限桁の表現は 16 の素因数(2)のみで生成される分母なので必ず有限の分数表現(有理数)になります。10進で有限かどうかとは別の話です。
A. はい。16進で有限桁の表現は 16 の素因数(2)のみで生成される分母なので必ず有限の分数表現(有理数)になります。10進で有限かどうかとは別の話です。
Q. 桁数が多いときの実務上の注意点は?
A. 通分時・約分時に誤差を出さないために分母・分子を整数演算(ライブラリの分数型)で扱い、最後に約分するのが安全です。
A. 通分時・約分時に誤差を出さないために分母・分子を整数演算(ライブラリの分数型)で扱い、最後に約分するのが安全です。
関連キーワード: 16進数, 進数変換, 基数変換, 16進小数, 分数表現, 小数→分数, 2進数, 約分, 通分, 16進→10進

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

