基本情報技術者 2018年 秋期 午前(科目A) 問01
問題文
16進数の小数0.248を10進数の分数で表したものはどれか。
選択肢
ア:
イ:
ウ:
エ:(正解)
🔒 解説は解答すると表示されます
16進小数の分数変換【午前解説】
正解の理由
16進小数の各桁は の係数で表されます。小数部が 0.248(16進)であれば
と表せます。これを通分して約分すると分数 になり、選択肢の中では エ がこの値に一致するため正解です。
と表せます。これを通分して約分すると分数 になり、選択肢の中では エ がこの値に一致するため正解です。
具体的には次節の手順で示すとおりです。
解法ステップ
- 16進小数の各桁を基数の累乗で表す。
。 - 分母を共通にするために を用いる:
、
、
。 - 足し合わせて分子を求める:
。 - 約分する。584 と 4096 の最大公約数は 8 なので、
。これが既約形。
したがって分数表現は 、選択肢では エ と一致します。
選択肢別の誤答解説
- ア:
値は (10進)で、 と大きく異なります。分母・分子ともに桁数や通分の過程が合っていません。 - イ:
値は (10進)に近いが、これは「見かけ上の小数列」をそのまま分数に読み替えた誤りです。16進小数と10進小数は基数が異なるため直接対応しません。 - ウ:
分母は正しい可能性があるが、分子は通分して得られる 73 ではなく 31 になっており算出ミスです。共通分母を取ったときの分子の合算を誤っています。 - エ:
上記の手順で求まる既約分数と一致します。
よくある誤解
- 「16進小数の小数列をそのまま10進小数と見なす」
たとえば 0.248 をそのまま 0.248(10進)として扱うと誤答になります。各桁は16進の位取りで評価する必要があります。 - 「16進で有限小数なら10進では無限小数になる」と思う誤り
16進の有限小数は分母が の形になり、約分後の分母は 2 のみの冪となります。10進(基数 10 = 2×5)で有限小数となる条件は分母の素因数が 2 と 5 のみであることなので、16進の有限小数は必ず10進でも有限小数になります。 - 通分・約分の見落とし
共通分母を取った後に最大公約数で約分する工程を省くと、既約形に到達できず選択肢と合致しないことがあります。
補足コラム
基数変換と小数の有限性についての一般法則:
- 基数 の有限小数は分数で分母が の形(約分後は の素因数だけを持つ)になります。
- 別の基数 で同じ数が有限小数になるための必要十分条件は、約分後の分母の素因数がすべて の素因数に含まれることです。例:16進(素因数は 2)で有限なら、10進(素因数は 2 と 5)でも有限になります。
簡単な例:
- (10進でも有限)
プログラムでの確認(参考):下のスニペットは16進小数"0.248"を分数に変換します。
from fractions import Fraction
s = "248" # 小数部の文字列("0." の後)
num = int(s, 16) # 16進として解釈した分子
den = 16 ** len(s) # 分母
fr = Fraction(num, den)
print(fr) # Fraction(73, 512)
FAQ
Q: なぜ共通分母に を使ったのですか?
A: 小数部の桁数が3桁なので、各項を整数分子に変えるために (最大の分母)で通分すると計算が簡単になります。
A: 小数部の桁数が3桁なので、各項を整数分子に変えるために (最大の分母)で通分すると計算が簡単になります。
Q: 約分できる因数はどう見つけるべきですか?
A: 分子と分母の両方を小さい素数(2,3,5,7,...)で順に割っていけば見つかります。今回は両者とも 8(=2^3)で割れました。
A: 分子と分母の両方を小さい素数(2,3,5,7,...)で順に割っていけば見つかります。今回は両者とも 8(=2^3)で割れました。
Q: 16進で有限だから必ず10進でも有限になるのですか?
A: はい。16は なので約分後の分母は 2 の冪だけになります。10進の基数は なので分母が2の冪であれば10進でも有限小数になります。
A: はい。16は なので約分後の分母は 2 の冪だけになります。10進の基数は なので分母が2の冪であれば10進でも有限小数になります。
関連キーワード: 16進数、基数変換、有限小数、分数表示、通分、約分、十進表記、小数展開、分母の素因数分解

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

