pp.157-158
単精度浮動小数点形式
図3.30aに単精度浮動小数点数を表現するための形式を示します。左端のビットが符号ビットS
です。0は正の数を、1は負の数をそれぞれ表します。8ビットの指数部E
と23ビットの假数部M
とがあります。指数の底は2です。非常に大きな数と非常に小さな数の両方を表現する必要があるため、指数は正負のどちらにもなり得ます。指数として単純に8ビットの符号つき数値を使う場合、指数の範囲は-128~+127ですが、IEEE規格はexcess - 127
という形式で指数を規定しています。この形式では、実際の指数の値に127が加えられます。すなわち指数は以下の式で表現されます。
指数 = E - 127
(訳註: 指数 = (0~255) - 127 = -127~128)
この方法だとE
は正の数になります。この形式は浮動小数点数の加算および減算に便利です。なぜなら加減算の最初の手順は指数同士を比較することだからです。指数同士を比較しないことには、有効ビット同士を加減算する際に假数を相応にシフトする必要があるかどうかの判断できません。E
の範囲は0~255です。両端の値である0および255はそれぞれ完全な0および無限大と見なされます。したがって指数の通常の範囲は-126~127です。E
の値としては1~254です。
假数は23ビットで表現されます。IEEE規格は、正規化された假数を規定しています。つまり最上位ビットは常に1であるため、わざわざこのビットを指数部に残す必要はありません。したがって指数部に記録されるビットベクタをM
とした場合、假数の実際の値は1.M
(訳註: ピリオドは小数点)であり、24ビットの假数が得られるというわけです。結局図3.30aの浮動小数点形式では以下の数値が表現されます。
値 = ±1.M × 2E-127
このサイズ(訳註: 暗黙の1ビット + 23ビット = 24ビット)の假数部だと、10進数で約7桁の精度が得られます(訳註: 正確にはlog10(224) = 7.2桁)。指数部の範囲2-126 ~ 2127 は10±38に相当します。