質問: 基本情報試験の問題で 基本情報試験の勉強で、この問題がよく意味がわかりません。答えはエだそうですが、どうしてこうなるんでしょうか?解説をお願いいたします。 ●2進の浮動小数点表示で誤差を含まずに表現できる10進数はどれか。 ア 0.2 イ 0.3 ウ 0.4 エ 0.5
回答: 2進数の各桁の数値は、2のn乗です。 小数点第1位が1/2、小数点第2位が1/4、・・・と、2の(-n)乗に対応します(10進数の場合、小数点第1位が1/10、小数点第2位が1/100というのと同じです) 2進数が誤差なく表現できるのは、この2の(-n)乗の和で表現できる数値に限られます。 たとえば、0.75 = (0.5) + (0.25) = 2^(-1) + 2^(-2)なので、2進数で誤差なく表現できます。 選択肢の中で、0.2/0.3/0.4については、にわかに2の(-n)乗の和で表現できるかどうかわからないですが、0.5は2の(-1)乗ですから、明らかに2の(-n)乗の和で表現できることがわかります。 答えが1つなので、正解はエであることがすぐわかります。 ただし、もしある数字が2進数で誤差なく表現できるかときかれた場合は、順次 0.5を引く→0.25を引く→0.125を引く→0.0625を引く・・・ という風にしていって、最終的にゼロにならないことを証明する必要があります。これは無理数の証明となり、若干困難です。