JavaScript 移位
JavaScript bit-shifting
我想将这个无符号数:1479636484000 向右移动 7 位。这在 JavaScript 中可行吗?
两者都
1479636484000 >> 7
和
1479636484000 >>> 7
returns 一个不正确的答案(对我来说)。正确答案应该是 11559660031。
我想这里涉及到一些符号位,也许数字太大而无法支持。但是有什么巧妙的方法可以解决这个问题吗?
JavaScript 中的按位运算首先将数字截断为 32 位整数。你的数字太大了。 "clever way" 解决该限制的方法是实现您自己的数字库。
请注意,浮点数除以 128 会得到正确答案(如果您舍弃分数)。
您可以使用带有数字的字符串并删除最后 7 个字符并将其转换回数字。
console.log((1479636484000).toString(2));
console.log((11559660031).toString(2));
console.log((1479636484000).toString(2).slice(0, -7));
console.log(parseInt((1479636484000).toString(2).slice(0, -7), 2));
我想将这个无符号数:1479636484000 向右移动 7 位。这在 JavaScript 中可行吗?
两者都
1479636484000 >> 7
和
1479636484000 >>> 7
returns 一个不正确的答案(对我来说)。正确答案应该是 11559660031。 我想这里涉及到一些符号位,也许数字太大而无法支持。但是有什么巧妙的方法可以解决这个问题吗?
JavaScript 中的按位运算首先将数字截断为 32 位整数。你的数字太大了。 "clever way" 解决该限制的方法是实现您自己的数字库。
请注意,浮点数除以 128 会得到正确答案(如果您舍弃分数)。
您可以使用带有数字的字符串并删除最后 7 个字符并将其转换回数字。
console.log((1479636484000).toString(2));
console.log((11559660031).toString(2));
console.log((1479636484000).toString(2).slice(0, -7));
console.log(parseInt((1479636484000).toString(2).slice(0, -7), 2));