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 | 半精度 | 2 | 5ビット | 10ビット |
binary32 | 単精度 | 2 | 8ビット | 23ビット |
binary64 | 倍精度 | 2 | 11ビット | 52ビット |
binary128 | 四倍精度 | 2 | 15ビット | 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ではなく、特殊な形式を採用している。
再検索