19.3.3 浮動小数点

絶対値の大きな数値や小数点以下の数値を表現する場合には, 浮動小数点 表現または 実数 表現と呼ばれる符号化を用います.

浮動小数点表現 の基本的な考え方は,指数表現の応用にあります. たとえば,物理や化学で用いられるアボガドロ定数は 6.0221367×1023 [mol-1] とされています. この 6.0221367 の部分を 仮数 ,-23 の部分を 指数 と呼ぶことにします. 浮動小数点表現は,仮数,指数,正負を表す符号(1ビット),の3種類を, それぞれビット列で表現する方法です.

浮動小数点表現としては, IEEE (The Institute of Electrtical and Electronics Engineers) の定めた IEEE 754 という規格が広く用いられています. IEEE 754 では,32ビット で表現する 単精度 と 64ビット で表現する 倍精度 が規定されています. 単精度と倍精度では,32ビット(第0〜31ビット)と64ビット(第0〜63ビット)を, それぞれ次のようなビット列に分けて表現します.

符号部指数部仮数部
単精度(32ビット)第0ビット(計1ビット)第1〜8ビット(計8ビット)第9〜31ビット(計23ビット)
倍精度(64ビット)第0ビット(計1ビット)第1〜11ビット(計11ビット)第12〜63ビット(計52ビット)

IEEE 754 では,このビット列を次のようにします.

(-1)符号部×(1.仮数部)(2)×2(指数部-bias)

ただし bias は, 指数を負にする,すなわち小数点以下の数を表現するためのもので. 単精度での場合 127,倍精度の場合 1023という値になります. IEEE 754 には, さらに細かい規定(たとえば指数部のビットがすべて0か1の場合の意味など) がありますが,ここでは省略します.

例として 6.0221367×10-23 という数を単精度浮動小数点表現にしてみます.

6.0221367×10-23 = (-1)0×1.1375495×2-74

なので,符号部は 0,指数部は -74 + 127 = 53 = 00110101(2) です.

仮数部は 1.1375495 = 1.00100011001101100111001(2) となります.

よって浮動小数点表現は

00011010100100011001101100111001

となります.