浮動小数点とは何か [数値解析]
浮動小数点とは何か
例えば、次の小数があるとする。
0.375は
だから、十進数で0.375の小数(0.375)₁₀は
と2進数の小数(0.011)₂である。
(1)の右辺の2進数小数(0.011)₂は
と表すことができる。
このように、
と、小数点の次に0以外の数字aが来るように小数を表す方法を、正規化された浮動小数点表示という。
そして、数字の列abc・・・のところを仮数部、2を基数、数字列αβγ・・・のところを指数部という。
いま、コンピュータの話をしており、コンピュータは2進数なので、文字列a,b,c,・・・、さらに、α,β,γのところには0と1が入る。ただし、aはa≠0である。
ところで、コンピュータでどのように負の数を表すか、知っているケロか。
いま、仮に4bitのコンピュータがあるとする。
十進数の7は、このとき、
となる。
この最初の数字の0は意味を持っているから勝手にとっちゃ駄目だケロよ。
で、十進数の−7は、コンピュータでどのように扱われるかというと、(3)の0111の1と0を反転すると、
この反転した1000に0001を加えたもの、つまり、
だケロ。
−3を求めるには、まず十進数の3を4ビットの2進数0011に変換し、次にビット列を反転する。
そして、これに0001を加えると、
となるので、4bitコンピュータ上では1101になる。
つまり、(4bit)コンピュータの場合、符号付きの数の場合、最初のビットは正負を表していて、0から始まる場合は非負の数、1で始まる場合は負の数であることを表しているんだにゃ。
このように2の補数を用いて、コンピュータでは負の数を表すんだケロ。
少し時代が下がり、コンピュータ技術が進み、コンピュータが16bitまで扱えるようになったとするにゃ。そして、次のように、浮動小数点を扱えるようになったとするにゃ。
S:仮数部の符号(0は正、1は負を表す)
E:2のべき乗の指数部(負の数は2の補数)
M:仮数部の絶対値
このとき、十進数0.375は、正規化された浮動小数点方式ではどうなるか、考えてみるにゃ。
だから、符号のところのSには0が入るにゃ。
1は4bitの2進数では0001だから、
よって、
したがって、Sのところには、1111が入り、次のようになるにゃ。
10進数の0.1は
となるので、
となる。
したがって、十進数0.1はこのコンピュータ上では
に変換され、0.000024414の丸め誤差が発生している。
仮数部11bitだから随分と精度がいいように思うかもしれないけれど、実際は、浮動小数点の数の計算では0.09997だから精度は4桁もないんだにゃ。
実際のコンピュータに使用されているものは、IEEE(「IとりぷるE」など呼ぶ)規格で、今回紹介したもののとは異なるけれど、基本は同じだにゃ。
コメント 0