平成24年度 秋期 ITパスポート試験 問66 解説 10進数から2進数への変換
問66 2進数に変換したとき, 有限小数で表現できる10進数はどれか。
- ア 0.1
- イ 0.2
- ウ 0.4
- エ 0.5 ✓ 正答
解説
2進数で有限小数になる条件
10進数の小数を2進数に変換したとき、有限小数で表せるのは、その数を既約分数(これ以上約分できない分数)にした際の分母が「2の累乗(2, 4, 8, 16...)」の形になる場合のみです。選択肢のうち、分母が2の累乗になっているものを選べば正解にたどり着きます。
10進数と2進数の関係
10進数の小数を2進数で表すと、小数点以下の各桁は、左から順に という値を足し合わせていくことになります。
つまり、2進数の有限小数は「 や や などをいくつか足し合わせた値」でなければなりません。これを分数に直すと、分母が必ず の形になります。逆に言えば、分母に2以外の素因数(3や5など)が含まれている場合、その数は2進数に変換すると無限に続く循環小数になってしまいます。
選択肢を分数で分析する
各選択肢を分数に直して分母を確認しましょう。
- ア :分母に5が含まれるため循環小数になります。
- イ :分母に5が含まれるため循環小数になります。
- ウ :分母に5が含まれるため循環小数になります。
- エ :分母が です。これは の形なので有限小数です。
このように、分母の素因数分解を確認するだけで、計算をしなくても有限小数かどうかを判定できます。
プログラミングと精度の問題
この知識は、単なる算数の問題にとどまらず、プログラミングを行う現場で非常に重要になります。コンピュータの内部では数値がすべて2進数で処理されているため、0.1のような10進数ではきれいな有限小数でも、2進数に変換すると「0.000110011...」というように無限に続いてしまいます。
そのため、プログラミング言語で を計算させると、正確に とならず、ごくわずかな誤差が発生することがあります。これを「浮動小数点数誤差」と呼びます。金融システムや科学技術計算など、正確性が求められるプログラムを組む際、プログラマはこの特性を理解し、誤差を考慮した処理や、あるいは誤差の出ないデータ型の選択を行う必要があります。この問題は、コンピュータの計算の根底にある「表現の限界」を理解するための第一歩となる重要なトピックです。