2018年03月26日
《その349》double型の内部表現(1)
double型の内部表現
一般的な環境においては、1つの double型浮動小数点数を表現するのに、コンピュータ内部で 64ビットが使われます。
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
64ビットを上記のように表すと、
・最初の 1ビット(0 で表した部分)は、符号
・次の 11ビット(0 で表した部分)は、指数部
・残りの 52ビット(0 で表した部分)は、仮数部
という構成になっています。
例(1) −12.75
負の数ですから、最初の符号ビットは
1
です。
次に、12.75 を 2進表記で表すと、
1100.11
すなわち
1.10011 × (2 の 3乗)
です。
指数部には、指数に 1023 を加えて格納するルールになっています。
したがって
3 + 1023 = 1026
1026 の 2進表記は
100 0000 0010 で、これが指数部になります。
次に仮数部ですが、
1.10011 の整数部分を省き、
10011 を格納するルールです。
仮数部は 52ビットありますから、
1001 10000000 00000000 00000000 00000000 00000000 00000000
となり、これが仮数部です。
以上より、double型 −12.75 は、コンピュータ内部に、
11000000 00101001 10000000 00000000 00000000 00000000 00000000 00000000
という表現で格納されます。
例(2) 0.6
正の数ですから、最初の符号ビットは
0
です。
次に、0.6 を 2進表記で表すと、
0.10011001100110011001100・・・
すなわち
1.0011001100110011001100・・・ × (2 の−1乗)
と、循環小数になってしまいます。
指数部には、指数に 1023 を加えて格納するルールになっています。
したがって
−1 + 1023 = 1022
1022 の 2進表記は
011 1111 1110 で、これが指数部になります。
次に仮数部ですが、
1.0011001100110011001100・・・ の整数部分を省き、
0011001100110011001100・・・ を格納するルールです。
仮数部は 52ビットありますから、
0011 00110011 00110011 00110011 00110011 00110011 00110011
となり、これが仮数部です。
以上より、double型 0.6 は、コンピュータ内部に、
00111111 11100011 00110011 00110011 00110011 00110011 00110011 00110011
という表現で格納されます。
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/7480274
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック