C 言語での倍精度浮動小数点数の表し方
C言語ではdouble型で表され、8バイト(64ビット)の2倍精度浮動小数点数として扱われます。内部表現はIEEE 754浮動小数点数の標準に従います。
具体的には、倍精度の浮動小数点数は、符号部、指数部、仮数部という3つの部分に分かれています。
- 符号ビット:1bit使用、数の正負を表す、0は正、1は負
- 指数部は11ビット幅で、数値の指数部を表します。正負の符号を表現する必要があるため、オフセット符号法が採用されています。ここで、全0は最小指数(-1023)を表し、全1は最大指数(1024)を表し、その他の2進数は実際の指数の1023を引いた値を表します。
- 小数点以下の部分は、52ビットで表され、数値の小数部分を表します。小数部分は、2進小数点以下の小数で、範囲は [1,2) です。
倍精算浮動小数の表し方は、(-1)^符号ビット * (1 + 仮数部) * 2^(指数部 – 1023) です。
注意が必要なのは、浮動小数点の精度の限界により、倍精度浮動小数点では一部の小数が正確に表せず、丸め誤差が生じる可能性があることだ。