在ECMA5中,它表示按位运算符和移位运算符以32位整数运算,因此在这种情况下,最大安全整数为2 ^ 31-1或2147483647。
但是,最大安全整数否则为2^53 - 1。
对于我的程序,我需要处理2 ^ 32和2 ^ 53之间的整数。
所以,我的问题:
目前在我的代码中我做了类似的事情:
value |= (byte & 127) << (7 * i);
这不适用于过去4的i
,因为它将超过31的最大班次范围。
唯一的替代方案就是......这个? (仍在努力)
value += (byte & 127) * Math.pow(10, i * 7);
不完全正确,但足够接近这一点..基本上必须模拟ORing到一个bithift来绕过31个移位限制的JavaScript限制。
有更好的方法吗?