キーワード辞典
浮動小数点型

登録日 08/12/05   更新日 12/06/09


浮動小数点数

コンピュータが扱うデータの形式の1つ。

数値を、(−1)符号×仮数×基数指数 の形で表現することで、整数だけではなく実数も含めて効率よく表現出来る様にしたデータ型。 浮動小数点数には幾つかの方法があるが、 最も一般的であるといわれているIEEE754の32ビット単精度の方法。

物凄く大雑把には、 コンピュータ内においてプログラムやデータを操作する際の単位を語(ワード)といい、 主記憶装置の各々の番地(アドレス)には一語が記憶出来る。 一語の大きさはコンピュータによって8ビット、16ビット、32ビット、など、色々ある。
また、プログラム言語のデータ型には様々な種類とその為に必要な大きさがある。 例えば、一語が16ビットのコンピュータCOMETにおいて、32ビットが必要なIEEE754を使用する場合は、 1つのデータを記憶するために2語が必要となり、正しくデータを処理するための対応も必要となる。 COMETにそんな言語処理系が有るのかどうかは知りませんが。


IEEE754 32ビット単精度



32ビットのうち、

左端の水色の1ビットは符号部。正の数なら0、負の数なら1。

左から2ビット〜9ビット目の緑色の8ビットは指数部。基数は2。
ビット列00000000と11111111は特別な意味を持つため指数としては使わない。 指数としての値は、十進数の−126から127までの範囲を扱う(プラスの方が多い)が、 二進数の補数によるマイナスの数の処理が面倒なため、 便宜上、指数としての値に十進数の127を加え、 全て符号なし二進数のプラスの値(十進数の1から254)にするイクシス表現であらわされる。 左図参照。

残りのオレンジ色の23ビットは仮数部。
このデータ形式では、数値の符号は符号部で判るので、 より多くの値が扱える様に数値の絶対値を使う。
また、例えば二進数の1010は、 1010×2、101.0×2、 0.1010×2、10100×2−1、など、幾つもの表現が出来てしまい不都合なので、 整数部分は必ず1にして有効桁を最大限に使える1通りに限定し(これを正規化と言う。1.010×2となる)、 さらに、その整数部分は必ず1であることを了解事項として省略することで、実質24ビット分を表現する事が出来る。


10進数の−118.625という数値をこのデータ形式で表現する。

この値の絶対値である118.625を符号なしの2進数に変換する。
1110110.101
整数部分が1になる様にする(正規化)。
1.110110101×2
これを、あてはめていく。

数値の符号は負なので、符号部は、1。
指数部は、6に127を加えた133を二進数に変換して、10000101
仮数部は、小数点以下の部分、110110101をあてはめ、残りのビットは0にする。


情報落ち

浮動小数点数で、 絶対値の差が極めて大きい値を加算する際に、細かい方の値がなくなってしまうこと。
面倒なので十進数、有効桁数が8桁の例。
100000+0.001=100000.00


桁落ち

浮動小数点数で、 殆ど等しい数値同士の減算を行った際に、有効桁数が減ってしまうこと。
面倒なので十進数、有効桁数が8桁の例。

√1001−√999
=31.638584−31.606961 (有効桁数同士の減算)
=0.031623

解決法
(√1001−√999)(√1001+√999)/(√1001+√999)
=(1001−999)/(31.638584+31.606961)
=2/63.245545
=0.031622781・・・
割り算なので、桁数が少なくならない。





[ 赤い玉の画像 ] 「キーワード辞典」の目次へ

[ 黒板消しとチョーク受けの画像 ]