32ビット単精度の交換形式
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/12/04 08:56 UTC 版)
「IEEE 754」の記事における「32ビット単精度の交換形式」の解説
単精度二進化浮動小数点数は、32ビットワードに格納される。 sign は符号、exponent は指数部、fraction は仮数部である。 指数部は下駄履き表現(バイアスまたはエクセスとも。符号付数値表現を参照)と呼ばれる形式であり、実際の値に、ある固定値(ここでは emax = 127)を加算したものである。このような表現にしているのは浮動小数点数同士の大小比較を容易にするためである。指数部は大きな値も小さな値も表せるように負の値にもなるが、これを単に2の補数で表すと、全体の符号 sign とは別に exponent も符号を持つことになり、単純な大小比較ができなくなってしまう。そのため、指数部はバイアスされて常に正の値となるような形式で格納される。単精度では−126 ~ +127に127を加えて、1 ~ 254としている(0と255は特殊な意味を持つ。後述)。この表現により「指数が正の数」「指数が1の数」「指数が負の数」「0」を、この順に自然に並べることができる。浮動小数点数を解釈するときは、バイアスを減算して実際の指数を求める。 表現可能なデータは指数部の値によって区別され、仮数部の値にも影響される。指数部も仮数部も符号無しの二進整数であることに注意されたい(指数部は 0 – 255)。 種類exponent(指数部)fraction(仮数部)ゼロ 0 0 非正規化数 0 0以外 正規化数 1 – 254 任意 無限大 255 0 NaN 255 0以外の任意 最も一般的な正規化数では、exponent はバイアスされた指数であり、fraction は仮数の小数点以下の部分である。先ほどの(−1)s × c × bqと対応づけると次のようになる。 s = sign q = exponent − emax (ここではemax = 127であり、換言すれば、指数に127を加算して格納されている。「127でバイアス」しているとも言う) b = 2 c = 1.fraction 正規数においてcは1以上2未満のため、常に1.xxx…と表記できる。このため、fractionにはxxx…の部分のみを格納し、実質1ビット多い24ビット精度を実現している。これはけち表現と呼ばれる。 なお、1 − emax = −126 が単精度における正規化数の最小の指数である。 正規化数以外の場合 非正規化数の場合q = −126で、cが 0.fraction とする。(qは−127 ではない。仮数の小数点以上の部分が0になっている関係で、指数を−126としてバランスをとっている。) ゼロは二種類存在する。+0(sが0)と−0(sが1)である。 無限大も二種類存在する。+∞(sが0)と−∞(sが1)である。 NaNにも符号や仮数があるが、分析以外の目的では使えない。fraction の先頭ビットで 「signaling NaN」と「quiet NaN」を区別する。 NaNと無限大はexponentフィールドが全て1である。
※この「32ビット単精度の交換形式」の解説は、「IEEE 754」の解説の一部です。
「32ビット単精度の交換形式」を含む「IEEE 754」の記事については、「IEEE 754」の概要を参照ください。
- 32ビット単精度の交換形式のページへのリンク