計算機算術

単精度の浮動小数点数で、1億(10⁸)に1を足しても結果が1億のまま変わらない。この現象の説明として正しいものはどれか。

  1. A1億は単精度では表せないので、結果がNaNになっている
  2. B有効桁数が約7桁しかなく、1が丸めで消えるため
  3. C足し算の命令が、大きな数の計算を省略する決まりになっている
答えと解説を見る

正解:B. 有効桁数が約7桁しかなく、1が丸めで消えるため

単精度は有効数字がおよそ7桁で、1億付近では表せる数の間隔が8になっています。1億 + 1 は表せる2つの値の間に入り、最も近い1億に丸められるので、1が消えてしまいます。このように、大きさの違う数を足すと小さい方の情報が失われる現象を情報落ちといいます。小さい値を大量に足すときは、小さいものから先に足す、補正つきの足し算を使うなどの工夫をします。1億は表せる数で、NaNにはなりません。

  • A. 1億は単精度で表せ、NaNにはなりません。
  • B. 正しい。1億付近の間隔は8で、1は丸めで消えます。
  • C. 足し算の命令が計算を省略しているわけではありません。
この分野を解く 分野ページへ

計算機算術のほかの問題

  1. 大量の浮動小数点数を足し合わせるときに使われるカハンの加算(補正つき加算)の目的として正しいものはどれか。
  2. FMA(融合積和演算)命令で a × b + c を計算する利点として正しいものはどれか。
  3. bfloat16がAIの学習で使われる主な理由はどれか。
  4. FP16(半精度:符号1・指数部5・仮数10ビット)でニューラルネットワークを学習させるときに問題になりやすく、損失の値を何倍かに拡大して計算する工夫(ロススケーリング)で対策するのはどれか。
  5. FP16(符号1・指数部5ビット(バイアス15)・仮数10ビット)で表せる最大の有限の値はいくらか。