16進数の小数を分数に直すときの桁の重みと約分の手順
基本情報技術者試験 平成30年度秋期 午前 問1 / 基礎理論 › 離散数学
過去問にチャレンジ
16進数の小数0.248を10進数の分数で表したものはどれか。
- ア
- イ
- ウ
- エ
会話形式の解説
講師今回は基数変換、つまり数の表し方を別の進数に直す問題です。16進数の小数を10進数の分数に直すので、小数点以下の各桁にどんな重みが付くかがポイントになります。
受験者0.248を見て、私は最初に248/1000を約分しそうになりました。そうすると31/125になって、選択肢にもあります。
講師その31/125は、0.248を10進数の小数として読んだときの値です。この問題の0.248は16進数なので、小数第1位は1/10ではなく1/16になります。第2位と第3位の重みは何になると思いますか。
受験者10進数で1/10、1/100、1/1000と進むのと同じように考えると、1/16、1/256、1/4096ですね。
講師そのとおりです。n進数の小数第k位の重みは、nのマイナスk乗です。では、各桁の数字に重みを掛けて足してみましょう。
受験者2/16+4/256+8/4096です。分母がばらばらで、計算に時間がかかりそうです。
講師いちばん下の桁の重みである4096を共通の分母にすると、まとめて計算できます。2/16は512/4096、4/256は64/4096になります。
受験者そうすると、(512+64+8)/4096=584/4096です。どちらも8で割れるので、73/512になります。
講師正解です。検算として小数に直すと、0.125+0.015625+0.001953125=0.142578125になります。73÷512も0.142578125です。
受験者31/512も分母が同じなので迷いそうです。でも、分母を512にそろえたときの分子は73なので、31は合いませんね。
講師そうです。31/512は約0.06なので、実際の値の約0.14とは違います。31/32は約0.97なので、大きく外れています。大まかな値を見積もるだけでも、候補を絞れます。
受験者31/125は分母が5の3乗です。16進数を分数にした場合は、分母に5が出てこないということでしょうか。
講師よいところに気づきました。16進数の有限小数を約分すると、分母は必ず2のべき乗になります。分母に5を含む分数は、それだけで候補から外せます。
講師別の解き方として、2進数を経由する方法もあります。16進数の1桁は2進数の4桁に当たるので、0.248は2進数で0.001001001000です。これを3桁ずつに区切ると8進数の0.111になり、(64+8+1)/512=73/512と求められます。計算が苦手な場合は、自分が確実にできる方法を一つ決めておくと安心です。
まとめ
16進数の小数を10進数の分数に直すときは、小数第k位に16のマイナスk乗の重みを掛けて合計します。(0.248)16は2/16+4/256+8/4096で、分母を4096にそろえると584/4096となり、8で約分して73/512になります。0.248を10進数の小数として読んだ31/125は誤りです。16進数の有限小数を約分すると分母は2のべき乗になるので、分母に5を含む選択肢は外せます。2進数を経由して8進数の0.111に直す方法でも、同じ73/512が得られます。
解答・解説
正解はエです
この問題のテーマ
16進数の小数を10進数の分数に直す、基数変換の問題です。小数点以下の各桁の重みを正しく使えるかが問われています。
解き方の考え方
16進数では、小数第1位の重みが1/16、第2位が、第3位がです。(0.248)16 の各桁の数字にこの重みを掛けて足し、最後に約分します。具体的には、2/16+4/256+8/4096 を分母4096にそろえると (512+64+8)/4096=584/4096 です。分子と分母を最大公約数の8で割ると73/512になり、正解のエと一致します。検算として小数に直すと、0.125+0.015625+0.001953125=0.142578125 で、73÷512 も 0.142578125 になります。
選択肢ごとの解説
- ×アアの31/32は約0.97です。重みを足した実際の値は約0.14なので、大きく離れています。
- ×イイの31/125は、0.248を10進数の小数とみなして248/1000を約分した値です。16進数の桁の重み(1/16、1/256…)を使っていないので、この問題の答えにはなりません。
- ×ウウは分母が512で、正しい値と同じです。しかし、分母を512にそろえたときの正しい分子は73なので、分子の31は合いません。小数に直すと31/512は約0.06で、実際の値の約0.14とも一致しません。
- ○エ各桁に16の負のべき乗の重みを掛けて合計し、約分すると73/512になります。エの値はこれと一致するので、エが正解です。
補足
2進数を経由して解く方法もあります。16進数の1桁は2進数の4桁に当たるので、(0.248)16 は (0.001001001000)2 です。これを3桁ずつに区切ると8進数の (0.111)8 になり、(64+8+1)/512=73/512 と求められます。
POINT
- n進数の小数第k位の重みは、nのマイナスk乗です。
- 16進数の小数は、最も下の桁の重み(ここでは)を共通分母にすると、まとめて計算しやすくなります。
- 分数にした後は、分子と分母の最大公約数で約分してから選択肢と比べます。
- 16進数の有限小数を約分すると分母は2のべき乗になるので、分母に5を含む分数は候補から外せます。
