情報・アルゴリズムのテーマ一覧へ

基礎科目・情報・アルゴリズム

浮動小数点と誤差

大学

4問H24・H27・H29・R1再

単精度浮動小数点数(符号1・指数8・仮数23ビット)への変換と、計算機の数で起きる誤差の種類が出ます。

よく出る形

  • 13.0 などの実数を,問題文の手順で「符号部・指数部・仮数部」の 0 と 1 の列に直す
  • 0.01 を100回足しても 1 にならない理由を選ぶ
  • 誤差の文章の正誤と,単精度の計算の2型。単精度は平成29と令和元再で同じ 13.0 が出た

覚えること

  • 浮動小数点数は,数を ±2α×(1+x)(1以上2未満の数 × 2のべき乗)の形にして記録する
  • 単精度は 符号部1ビット(正が0,負が1),指数部8ビット(α+127 を2進数にしたもの),仮数部23ビット(x を2進数の小数にしたもの)
  • 127 を足すのは,マイナスの指数も正の数で表すための決まり。指数部が 01111111(127)なら α=0,それより小さければ α はマイナス
  • 2進数の小数:(0.1)2 = 1/2,(0.01)2 = 1/4,(0.001)2 = 1/8,(0.0001)2 = 1/16。(0.1)2 = 0.5 や (0.01)2 = 0.25 は有限の桁で表せる
  • 丸め誤差:決まった桁数に収めるため,はみ出た桁を切り捨てたり四捨五入したりして生じる誤差。10進数の 0.1 や 0.01 は2進数で割り切れないので,足し合わせると誤差がたまる
  • 桁落ち:ほぼ同じ大きさの数どうしを引くと,有効な桁が減ってしまうこと
  • 情報落ち:とても大きい数にとても小さい数を足すと,小さいほうが反映されないこと
  • オーバーフロー:結果が表せる範囲より大きくなること

解き方

  • 実数を 2 で割れるだけ割って 1 以上 2 未満にする。例:13 ÷ 23 = 1.625 なので α=3,x=0.625
  • 符号部:正なら 0,負なら 1
  • 指数部:3+127=130=128+2 なので 10000010
  • 仮数部:0.625=1/2+1/8=(0.101)2 なので 101 のあとに 0 が並ぶ
  • 列から実数を求める時は,指数部の値 − 127 で α を出し,仮数部から x を出して ±2α×(1+x) を計算する
  • 確かめ:23×1.625=13 になれば正解

ひっかけ

  • 指数部に α そのもの(3 なら 00000011)を入れたり,127 を足し忘れたりしない
  • 仮数部には「1.」の 1 は入れず,小数点より後ろだけを並べる
  • 符号部が 1 なら負の数。値を求めたあとに負の符号をつけ忘れない
  • 情報落ちで消えるのは小さいほうの数。「大きいほうの下の桁が失われる」は逆
このテーマの想定問題を解く

想定問題:1・2・3

このテーマの過去問(このサイトに解説がある 1問)

平成に出た同じテーマ(3問)

このサイトにはまだ解説がありません。年度と題だけです。