位移精度

Bitwise shift precision

我正在尝试将 Python 库移植到 Javascript,但无意中发现两者之间存在数值差异..

与Python, 1057618395136 >> 16 == 16137976 随着 Javascript, 1057618395136 >> 16 == 16120

我读到 Javascript 中的整数精度是 53 位,Math.pow(2, 53) == 9007199254740991),这仍然在我试图做的 bifshift 操作的范围内.. 我错过了什么?

JavaScript 按位运算符将浮点值截断为 32 位整数。因此,尽管 64 位浮点值确实可以容纳 53 位整数,但您无法通过移位运算符利用所有 53 位。

要在JavaScript中右移16位,可以除以65536。