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
という結果になる。