情報I 学習サイト
任意40分

浮動小数点数と演算誤差

学習目標
学習の作業時間の目安
読む(浮動小数点数の考え方)10分
操作(数を入れて内部表現を見る)10分
読む(演算誤差の例)10分
練習と振り返り10分

1. 浮動小数点数

小数点の位置を固定すると表せる範囲が狭くなるため、小数点の位置を指数で動かして表します。これを浮動小数点数といいます。

32ビットの例では、最上位の1ビットを符号部、次の8ビットを指数部、残りの23ビットを仮数部とします。

S 指数部 E(8ビット) 仮数部 M(23ビット) 符号 値 = (−1)^S × 1.M × 2^(E − 127) の形で表す
図1 32ビットの浮動小数点数の並び。符号は1ビット、指数は8ビット、仮数は23ビット。

2. 操作

数を入力すると、単精度(32ビット)の浮動小数点数としての内部表現が表示されます。

3. 演算誤差

0.1 のような小数は、2進数では無限に続く(0.0001100110011…)ため、有限のビットでは丸めが生じます。その結果、計算を重ねると誤差が積み重なることがあります。

注意
表計算ソフトで 1.9 − 1.8 を計算すると、表示の桁数によっては 0.1 ちょうどにならないことがあります。計算の順序を変えると結果が変わる場合もあります。

段階別の練習

自力演習(10分): 2進数の小数を、2で割り切れるかで確かめます。

易(基本の確認)

  1. 0.5(10) を2進数で表しなさい。
    答えと解き方0.1(2)。1/2 は 2 進で 0.1。
  2. 0.25(10) を2進数で表しなさい。
    答えと解き方0.01(2)。1/4 は 2 進で 0.01。

標準(手順を組み合わせる)

  1. 0.75(10) を2進数で表しなさい。
    答えと解き方0.11(2)。0.5 + 0.25 = 0.75。
  2. 0.375(10) は2進数で有限に表せるか。表せるなら答えなさい。
    答えと解き方表せる。0.375 = 3/8 で、0.011(2)。

共通テスト形式(読み取りと判断)

  1. 0.1(10) は2進数で有限に表せないことを、「2で割り続ける」方法で説明しなさい。
    答えと解き方0.1 × 2 = 0.2(0)、0.4(0)、0.8(0)、1.6(1)、1.2(1)…と続き、同じ小数の並びに戻るため、循環する無限小数になる。
  2. 32ビットの浮動小数点数で、符号部が 1 の数は何か。
    答えと解き方負の数。符号部は 1 のとき負、0 のとき正。

振り返り

← 前のページ 次のページ →