SSブログ

浮動小数点とは何か [数値解析]

浮動小数点とは何か

 

例えば、次の小数があるとする。

0.375

だから、十進数で0.375の小数(0.375)₁₀

と2進数の小数(0.011)₂である。

 

(1)の右辺の2進数小数(0.011)₂

と表すことができる。

このように、

と、小数点の次に0以外の数字aが来るように小数を表す方法を、正規化された浮動小数点表示という。

そして、数字の列abc・・・のところを仮数部、2を基数、数字列αβγ・・・のところを指数部という。

いま、コンピュータの話をしており、コンピュータは2進数なので、文字列a,b,c,・・・、さらに、α,β,γのところには0と1が入る。ただし、aa≠0である。

 

ところで、コンピュータでどのように負の数を表すか、知っているケロか。

いま、仮に4bitのコンピュータがあるとする。

十進数の7は、このとき、

となる。

この最初の数字の0は意味を持っているから勝手にとっちゃ駄目だケロよ。

で、十進数の−7は、コンピュータでどのように扱われるかというと、(3)011110を反転すると、

この反転した10000001を加えたもの、つまり、

だケロ。

−3を求めるには、まず十進数の3を4ビットの2進数0011に変換し、次にビット列を反転する。

そして、これに0001を加えると、

となるので、4bitコンピュータ上では1101になる。

つまり、(4bit)コンピュータの場合、符号付きの数の場合、最初のビットは正負を表していて、0から始まる場合は非負の数、1で始まる場合は負の数であることを表しているんだにゃ。

このように2の補数を用いて、コンピュータでは負の数を表すんだケロ。

 

少し時代が下がり、コンピュータ技術が進み、コンピュータが16bitまで扱えるようになったとするにゃ。そして、次のように、浮動小数点を扱えるようになったとするにゃ。

 

 

S:仮数部の符号(0は正、1は負を表す)

E:2のべき乗の指数部(負の数は2の補数)

M:仮数部の絶対値

 

このとき、十進数0.375は、正規化された浮動小数点方式ではどうなるか、考えてみるにゃ。

だから、符号のところのSには0が入るにゃ。

14bitの2進数では0001だから、

よって、

したがって、Sのところには、1111が入り、次のようになるにゃ。

 

 

10進数の0.1

となるので、

となる。

したがって、十進数0.1はこのコンピュータ上では

に変換され、0.000024414丸め誤差が発生している。

仮数部11bitだから随分と精度がいいように思うかもしれないけれど、実際は、浮動小数点の数の計算では0.09997だから精度は4桁もないんだにゃ。

 

実際のコンピュータに使用されているものは、IEEE(「IとりぷるE」など呼ぶ)規格で、今回紹介したもののとは異なるけれど、基本は同じだにゃ。

 

 


nice!(0)  コメント(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。