浮動小数点数と演算誤差
学習目標
- 小数を、符号部・指数部・仮数部に分けて2進数で表す考え方を説明できる。
- 小数を2進数に変換するときに誤差が生じる理由を説明できる。
| 学習の作業 | 時間の目安 |
|---|---|
| 読む(浮動小数点数の考え方) | 10分 |
| 操作(数を入れて内部表現を見る) | 10分 |
| 読む(演算誤差の例) | 10分 |
| 練習と振り返り | 10分 |
1. 浮動小数点数
小数点の位置を固定すると表せる範囲が狭くなるため、小数点の位置を指数で動かして表します。これを浮動小数点数といいます。
32ビットの例では、最上位の1ビットを符号部、次の8ビットを指数部、残りの23ビットを仮数部とします。
2. 操作
数を入力すると、単精度(32ビット)の浮動小数点数としての内部表現が表示されます。
3. 演算誤差
0.1 のような小数は、2進数では無限に続く(0.0001100110011…)ため、有限のビットでは丸めが生じます。その結果、計算を重ねると誤差が積み重なることがあります。
注意
表計算ソフトで 1.9 − 1.8 を計算すると、表示の桁数によっては 0.1 ちょうどにならないことがあります。計算の順序を変えると結果が変わる場合もあります。
表計算ソフトで 1.9 − 1.8 を計算すると、表示の桁数によっては 0.1 ちょうどにならないことがあります。計算の順序を変えると結果が変わる場合もあります。
段階別の練習
自力演習(10分): 2進数の小数を、2で割り切れるかで確かめます。
易(基本の確認)
- 0.5(10) を2進数で表しなさい。
答えと解き方
0.1(2)。1/2 は 2 進で 0.1。 - 0.25(10) を2進数で表しなさい。
答えと解き方
0.01(2)。1/4 は 2 進で 0.01。
標準(手順を組み合わせる)
- 0.75(10) を2進数で表しなさい。
答えと解き方
0.11(2)。0.5 + 0.25 = 0.75。 - 0.375(10) は2進数で有限に表せるか。表せるなら答えなさい。
答えと解き方
表せる。0.375 = 3/8 で、0.011(2)。
共通テスト形式(読み取りと判断)
- 0.1(10) は2進数で有限に表せないことを、「2で割り続ける」方法で説明しなさい。
答えと解き方
0.1 × 2 = 0.2(0)、0.4(0)、0.8(0)、1.6(1)、1.2(1)…と続き、同じ小数の並びに戻るため、循環する無限小数になる。 - 32ビットの浮動小数点数で、符号部が 1 の数は何か。
答えと解き方
負の数。符号部は 1 のとき負、0 のとき正。
振り返り
- 固定小数点(小数点の位置を変えない)と比べて、浮動小数点の利点を説明できますか。
- 0.1 が2進数で有限に表せない理由を、2で割り続けることから説明できますか。