倍精度

倍精度の最新ニュースをまとめて検索!

情報処理において、倍精度(ばいせいど、Double Precision)は、コンピュータ内のあるアドレスの2つのメモリ単位に数値を格納するコンピュータの数値表現の一種である。倍精度数Double-precision Number)とも呼び、整数固定小数点数浮動小数点数のいずれの定義ともなりうる。

歴史的には、FORTRAN言語と密接にかかわって来た。コンピュータのアーキテクチャが落ち着き、マイクロプロセッサが浮動小数点を扱い始め、出現したコプロセッサi8087IEEEでの標準化のきっかけとなった。 FORTRAN時代には、単精度よりも精度がよければ倍精度を名乗る事ができた。同じビット数で、より広範囲の数を扱う為に16進の浮動小数点形式もあり、この場合は単精度32ビットでは有効数字は6桁程度となり技術計算では倍精度以上を使わねばならないようなコンピュータも存在した。

最近のコンピュータでは、単精度は32ビット、倍精度は64ビットで格納される。倍精度浮動小数点数Double Precision Floating Point)はIEEE 754で標準化されており、8バイトで浮動小数点数を表す。

目次

[編集] 倍精度浮動小数点数のメモリ上の形式

  • s(符号ビット): 1
  • y(指数部の幅): 11
  • x(仮数部の幅=精度): 52

指数部が全て 0 でない限り、この形式では「暗黙の整数ビット」を 1 とみなす。従って小数部の52ビットだけがメモリフォーマット上に出現し、全体としての精度は53ビット(十進に直すと約16桁)である。ビットのレイアウトは以下のようになる。

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とも言う。詳しくは符号付数値表現を参照されたい。真の指数値は、指数部の値から指数部バイアスを引いた値となる。

  • 0x000 と 0x7ff は予約された指数値である。
  • 0x000 は 0非正規化数を表現するのに使われる。
  • 0x7ff は無限大NaNを表現するのに使われる。

従って、全てのビットパターンが符号として意味がある。

[編集] 倍精度浮動小数点数の例(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   = 負の無限大

[編集] MSXの場合

MSX-BASICの場合、同様に8バイトで表すが、IEEE 754とは異なり

  • s(符号ビット): 1
  • y(指数部の幅): 7
  • x(仮数部の幅=精度): 56
 syyy yyyy xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx

であり、指数部をバイナリ、仮数部をBCDで表現する。 そのため、有効数字は正確に10進で14桁で、指数は±63乗である。

ちなみに、同時期の8ビットパソコンは多くがBCDではなく2進での演算であった。

[編集] 関連項目

最終更新 2009年9月20日 (日) 09:35 (日時は個人設定で未設定ならばUTC)。
【倍精度】変更履歴

ご利用上の注意

もっと調べる!