このコードを使用して、数値に含まれるビット数を調べようとしています。以下の 16 進数では、すべてのビットがオンになっています。
for (var i = 0x1FFFFFFFFFFFFF, m = 0; i & 1; ++m, i >>>= 1);
何らかの理由で印刷m
すると32になりますが、SOの投稿で次のように読みました:
JavaScript のすべての数値は、実際には IEEE-754 準拠の浮動小数点 double です。これらには 53 ビットの仮数部があり、約 9000 兆以下の大きさの整数値が正確に表現されることを意味します。
m
これを間違って実装していない限り、 53 ビットであるはずの印刷が 32 ビットになる理由がわかりません。誰か説明してくれませんか?