倍精度
出典: フリー百科事典『ウィキペディア(Wikipedia)』
情報処理において、倍精度(Double Precision)は、コンピュータ内のあるアドレスの2つのメモリ単位に数値を格納するコンピュータの数値表現の一種である。倍精度数(Double-precision Number)とも呼び、整数、固定小数点数、浮動小数点数のいずれの定義ともなりうる。
歴史的には、FORTRAN言語と密接にかかわって来た。コンピュータのアーキテクチャが落ち着き、マイクロプロセッサが浮動小数点を扱い始め、出現したコプロセッサi8087がIEEEでの標準化のきっかけとなった。 FORTRAN時代には、単精度よりも精度がよければ倍精度を名乗る事ができた。同じビット数で、より広範囲の数を扱う為に16進の浮動小数点形式もあり、この場合は単精度32ビットでは有効数字は6桁程度となり技術計算では倍精度以上を使わねばならないようなコンピュータも存在した。
最近のコンピュータでは、単精度は32ビット、倍精度は64ビットで格納される。倍精度浮動小数点数(Double Precision Floating Point)はIEEE 754で標準化されており、8バイトで浮動小数点数を表す。
目次 |
[編集] 倍精度浮動小数点数のメモリ上の形式
- s(符号ビット): 1
- y(指数部の幅): 11
- x(仮数部の幅=精度): 52
指数部が全て 0 でない限り、この形式では「暗黙の整数ビット」を 1 とみなす。従って小数部の52ビットだけがメモリフォーマット上に出現し、全体としての精度は52ビット(十進に直すと15桁)である。ビットのレイアウトは以下のようになる。
syyy yyyy yyyy xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
[編集] 指数部の符号化方式
- Emin (0x001) = -1022
- Emax (0x7fe) = 1023
- 指数部バイアス (0x3ff) = 1023
指数部バイアスは、エクセスNとも言う。詳しくは符号付数値表現を参照されたい。真の指数値は、指数部の値から指数部バイアスを引いた値となる。
従って、全てのビットパターンが符号として意味がある。
[編集] 倍精度浮動小数点数の例(16進表示)
3ff0 0000 0000 0000 = 1
c000 0000 0000 0000 = -2
7fef ffff ffff ffff ≒ 1.7976931348623157 x 10308 (倍精度浮動小数点数の最大値)
3fd5 5555 5555 5555 ≒ 1/3
(1/3 は単精度とは異なり、切り下げられる。これは仮数部のビット数が奇数であるため。)
0000 0000 0000 0000 = 0 8000 0000 0000 0000 = -0
7ff0 0000 0000 0000 = 正の無限大 fff0 0000 0000 0000 = 負の無限大