(3)情報落ち

コンピュータでの計算のときのように有効桁数が限られている条件下で、
絶対値の大きい数と絶対値の小さい数を加減算したとき、絶対値の小さい数が無視されてしまう現象。

これもwikipediaの例でいまいち理解できなかったので、以下の例で理解。
http://rryu.sakura.ne.jp/compfund/backnumber/compfund057.txt


要するに、加減算を行う時、ふたつの数値の指数を等しくするために、
指数の小さい方の数値の仮数を右シフトすることが問題で、
その結果として指数の小さい方の数値の下位ビットは失われてしまいます。


その下位ビットが失われたことが『情報落ち』

■ 情報落ち ■

 加減算を行う時、ふたつの数値の指数を等しくするために、指数の小さい方
の数値の仮数を右シフトします。その結果として指数の小さい方の数値の下位
ビットは失われてしまいます。もしふたつの数値の指数がかけ離れていたとし
たらどうなってしまうでしょうか。仮数の全てのビットは右シフトによって失
われてしまい、実質0を足しているのと同じ状態になります。この現象のこと
を「情報落ち」と言います。


1.00000000000000000000000×2^(+0)
+) 1.00000000000000000000000×2^(-30)
-------------------------------------

1.00000000000000000000000 ×2^(+0)
+) 0.000000000000000000000000000001×2^(+0)
--------------------------------------------
1.00000000000000000000000 ×2^(+0)


 情報落ちは合計を求める時などに問題になります。たとえ小さな数値が1万
個あったとしても、それを全て大きな数値に足し合わせてしまったら、実質1
万回0を足しているようなもので、何も変わらずちっとも合計になりません。

 これを防ぐ最も簡単な方法は、小さい方から足し合わせて行くことです。合
計を求める前に数値を大きさ順に並び替えて、小さい方から順に足し合わせて
いきます。つまり、情報落ちの原因となる極端に大きさの異なる数値の加減算
を行わないように、計算順序を変えてしまうというわけです。