2018-4-9
ECMAScriptの浮動小数点の内部表現に関して
ECMAScriptではNumberは64ビット倍精度浮動小数点方式
なので
- 符号:1 ビット(0 が正、1 が負)
- 指数部:11 ビット
- 仮数部:52 ビット
例えば、3は内部的には
0100 0000 0000 1000
0000 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000
という表現になる
これは
- 符号:
0 - 指数部:
100 0000 0000 - 仮数部:
1000 0000 0000 ...
となる。
符号は0が正、1が負を表すので、今回は正。
指数部は 10 進数に変換すると1024。ここから 64 ビット倍精度浮動小数点方式の場合は-1023して結果的に1となる。
仮数部は 1 の位が 1 の少数と決まっており、今回の場合は1.10000000...、つまり1.1となる。(2 進数であることに注意)
(例えば、仮数部が0010 0000 0000 ....の場合は、1.001となる)
よって
0b1.1 * 2^1
= 0b11
= 3
という結果になる。