ゼロイチです!
2進数の計算や数値表現は今回で最後になります!
最後は「誤差」と「近似値」です。
コンピュータは表現できる数はbit数で決まりますので、表現できる範囲を超えるた時(無限小数など)それに近い値「近似値」で表されます。
その時、実際の値との間に生じるのが「誤差」になります。
今回はいくつかある「誤差」について見ていきます!
無限小数は以下で復習できます^^
-
-
10進数から2進数、8進数、16進数へ!
ゼロイチです! 今回は私たちが日常で使っている10進数を他の進数に変換する方法を見ていきましょう! 整数部の変換 まずは ...
続きを見る
打ち切り誤差
「打ち切り誤差」は計算の処理を完了まで待たず、途中で打ち切ることで生じる誤差
例えば、
√2 = 1.4142135623 7309504880 1688724209 6980785696 7187537694 ...
このように永遠と続く計算をいつまでもするのではなく、ある桁までとするといった決められた規則に従って計算を打ち切ることで誤差が生じますね。
桁落ち
絶対値がほぼ等しい数同士の差を求めた時、有効な桁数が大きく減ることで生じる誤差
例えば次の有効けた数3桁の二つの数字、
0.773 × 107
0.771× 107
この二つの数字の差は0.002 × 107
↑有効けた数1桁になり、浮動小数点数は正規化されるので、0.200 × 105になってしまいます。
赤字の0の部分ですが、元々0だったという確証がないので信用できなくなります。
このように誤差が生じてしまいますね。
丸め誤差
表現できる桁数を超えてしまったときに、最小の桁より小さい部分が四捨五入や切り上げ、切り捨てなどを行うことによって生じる誤差
例えば次のような2進数について、
0.110011000111000001101011000101000・・・・
8bitの桁数の時、はまらなかった桁数は捨てられてしまう。
捨てられた分だけ誤差が生じてしまいますね。
桁あふれ誤差
演算により、コンピュータの超える最大値や最小値を超えることによって生じる誤差
これも数字は決められた桁数で表現されるということから上限や下限の値があり、
それらを超える数字が出てきたとに誤差が生じますね。
そのような事象には名前があります。
アンダーフロー:最小値を超えてしまうこと
オーバーフロー:最大値を超えてしまうこと
注意ポイント
アンダーフローについてよくある勘違い
8bitの固定小数点数の場合、【最小:-128、最大:127】
これら数字を超えることはどちらもオーバーフロー
アンダーフローは、限りなく0に近い実数により、浮動小数点数の指数部がパンクして精度が保てない場合に起きるもの
(例)0.0000000000000000000000・・・000000000001
情報落ち
絶対値の大きな値と絶対値の小さな値の加減算を行った時に、絶対値の小さな値が計算結果に反映されないことによって生じる誤差
例えば以下のような計算をしてみる。
前提として仮数部を4桁で表す浮動小数点数では、
0.2345 × 104 + 0.5432 × 10-4
= 0.2345 × 104 + 0.000000005432 × 104
=0.234500005432 × 104
コンピュータの中では正規化されるので、
0.2345 × 104
となり、小さな数が無かったことにされてしまうため誤差が生じますね。
まとめ
以上、5つ誤差についてまとめてきました!
正規化されることと、数値は決められたbit数で表されることを覚えていたら理解しやすかったかと思います。
これで数の計算は表現方法という基本は終わり^^
引き続き勉強していきましょう!