本文へスキップ

平成24年度 秋期 ITパスポート試験 問66

この問題の解説と、これまでの解答の記録です。

問66
頻出度★★☆

2進数に変換したとき,有限小数で表現できる10進数はどれか。

出典 平成24年度 秋期 ITパスポート試験 問66
解説

問 66

  • 不正解ア

    0.1 は既約分数にすると 1/10 = 1/(2×5) で、分母に2以外の素因数5が残るため2進数では有限小数にならない。順次2倍法で変換すると 0.1×2=0.2 (整数部0)、0.2×2=0.4 (0)、0.4×2=0.8 (0)、0.8×2=1.6 (1)、0.6×2=1.2 (1)、小数部が再び 0.2 に戻って以降は同じ計算の繰り返しとなり、0.0001100110011… と 0011 が無限に続く循環小数になる。なお、コンピュータが10進の0.1を2進の浮動小数点数で正確に表せず誤差を生じるのは、まさにこの性質が原因である。

  • 不正解イ

    0.2 は既約分数にすると 1/5 で、分母が2の冪ではなく5であるため2進数では有限小数にならない。順次2倍法では 0.2×2=0.4 (整数部0)、0.4×2=0.8 (0)、0.8×2=1.6 (1)、0.6×2=1.2 (1) と進んだところで小数部が最初の 0.2 に戻り、0.001100110011… と 0011 が循環する無限小数になる。10進では小数第1位で終わる「きりのよい」数に見えても、基数が2に変わると有限で表せるとは限らない点に注意が必要である。

  • 不正解ウ

    0.4 は既約分数にすると 2/5 で、分母に5が残るため2進数では有限小数にならない。順次2倍法では 0.4×2=0.8 (整数部0)、0.8×2=1.6 (1)、0.6×2=1.2 (1)、0.2×2=0.4 (0) で小数部が最初の 0.4 に戻り、0.011001100110… と循環する。0.4 は 0.2 の2倍、すなわち2進数では 0.2 の並びを1桁左にずらしただけの値なので、0.2 が循環する以上 0.4 も必ず循環すると考えてもよい。

  • エ

    正解 正解はエ「0.5」。10進の小数が2進数で有限小数 (有限桁で終わる小数) になるかどうかは、その値を既約分数にしたときの分母で決まる。2進数の小数第n位は 2 の -n 乗 (0.1が1/2、0.01が1/4、0.001が1/8 …) を表すので、有限桁で書ける数は必ず「整数 ÷ 2のn乗」の形になる。逆にいえば、既約分数の分母が2の冪 (2、4、8、16…) であるときだけ2進数で有限小数になり、分母に5などの2以外の素因数が残っていると必ず循環小数になる。0.5 は既約分数にすると 1/2 で分母がちょうど2の1乗だから、2進数では 0.1 とわずか1桁で表現でき、これが有限小数である。実際の変換手順 (小数部を2倍し、整数部を上の桁から順に取り出す順次2倍法) で確かめても、0.5×2=1.0 となって整数部に1が立ち、小数部がその時点で0になるため計算が終了する。したがって、選択肢の中で2進数に変換したときに有限小数で表現できる10進数はエである。

ここがポイント
  • 2進数で有限小数になる条件 — 10進小数を既約分数にしたとき、分母が2の冪 (2、4、8、16…) であるものだけが2進数で有限小数になる。分母に5などの2以外の素因数が残る 0.1、0.2、0.3、0.4 などはすべて2進数では循環小数になり、0.5、0.25、0.75、0.125 のように 1/2 の冪の和で書ける値だけが有限桁で表せる。
  • 10進小数→2進小数の基数変換 (順次2倍法) — 小数部を2倍し、その整数部 (0か1) を小数第1位から順に書き出して、残った小数部に対して同じ操作を繰り返す。小数部が0になれば有限小数として変換完了、同じ小数部が再び現れたらそこから先は循環小数となる。この誤差が浮動小数点演算の丸め誤差の原因になることも合わせて押さえておきたい。
用語

解答の記録