IEEE 754
読み:アイトリプルイーななごーよん
外語:IEEE 754

 浮動小数点の演算で広く用いられている、数値表現の標準仕様。実際の数値の表現方法のほかに、特殊な値、丸め、例外などを規定している。
目次

概要
 これを著している時点での最新版は、2008(平成20)年に制定されたIEEE 754-2008である。
 IEEE 754-2008は、元々の規格IEEE 754-1985に、基数に依存しない浮動小数点演算の規格IEEE 854-1987を融合して作られた。IEEE 754-2008には、従来の2進数形式(単精度、倍精度)の他に、10進数の形式が規定されている。
 IEEE 754に準拠する、という意味では、このうちのどれか一つ以上に対応すれば良い。

特徴

数値形式
有限数
 2または10を基数とする、任意の有限数を扱うことができる。
 基数b、符号s(0で+、1で-)、仮数部m、指数部eとすると、数値は、次の式で表現される。
 (-1)s × m × be
 仮数mと指数eの長さが異なる複数の形式が用意されており、それぞれで扱える数値の範囲、精度などが異なる。
 同じ値を複数の形式で表現可能だが、そのうち一つを正規化数、それ以外を非正規化数という。
0
m=e=0の場合が0だが、この場合でもsが有効なため、0には+0と-0が存在する。
eが全ビット1で、m=0の時、∞である。この場合でもsが有効なため、∞には+∞と-∞が存在する。
非数(NaN)
 eが全ビット1で、mの最上位ビットを除いた値が1以上の時、NaNである。この場合でもsが有効なため、NaNには+NaNと-NaNが存在する。
 更に、NaNにはQuiet NaNとSignaling NaNがあり、mの最上位ビットが0ならSignaling ±NaN、1ならQuiet ±NaN、である。いずれの場合も、mの余剰ビットを用いて情報の伝達をすることが可能。
不定値(Indeterminate)
eが全ビット1で、mの最上位ビットのみが1の時、不定値である。この場合でもsが有効なため、∞には+不定と-不定が存在する。

種類
 16ビット長、32ビット長、64ビット長、128ビット長での表現方法が規定されている。
 IEEE 754-2008では標準形式(Basic formats)、算術形式(Arithmetic formats)、交換形式(Interchange formats)があり、最低限、標準形式には対応せねばならない。
名称基数指数長仮数長
binary16半精度25ビット10ビット
binary32単精度28ビット23ビット
binary64倍精度211ビット52ビット
binary128四倍精度215ビット112ビット
decimal32 10 7桁
decimal64 10 16桁
decimal128 10 34桁
 このうち、binary16とdecimal32は標準形式ではなく、主として(短いビット長での)値の保存用として規定されている。

2進ビット表現
 16ビット長、32ビット長、64ビット長、128ビット長、いずれの交換形式においても、一般的には最上位ビット(MSB)に符号(s)を置き、次に指数e、下位に仮数mを置く。
 例えば、単精度(binary32)であれば、次のようになる。
  1     8               23
 +-+--------+-----------------------+
 |S|  Exp   |  Fraction             |
 +-+--------+-----------------------+
31 30     23 22                     0
 Sが符号部、Expが指数e、Fractionが仮数mである。
 この場合のExpは8ビットだが、127を加算し、-126〜+127を、1〜254で表現している。Exp=0とExp=127は特殊な値の表現に使われるため、通常の値には利用できない。
 なお、倍精度(binary64)の場合も同様に、Expは11ビットなので1023を加算する。

10進ビット表現
 10進の場合、表現方法が複雑である。
 2進の場合と同様に、符号s、指数e、仮数mで表わすことは同様だが、仮数mが10進になっている。更に、1桁でも多く詰め込むようにするため、仮数部はBCDではなく、特殊な形式を採用している。

再検索