JavaScript位移

时间:2016-11-20 14:57:53

标签: javascript bit-shift

我想将这个无符号数字:1479636484000 7位移到右边。这在JavaScript中是否可行?

两个

1479636484000 >> 7

1479636484000 >>> 7

返回错误的答案(对我而言)。正确答案应该是11559660031。 我想这里有一些符号位,也许这个数字太大而无法支持。但是有没有聪明的方法来解决它?

2 个答案:

答案 0 :(得分:2)

JavaScript中的按位操作首先将数字截断为32位整数。你的数字太大了。 "聪明的方式"解决这个限制是实现自己的数字库。

请注意,128分的浮点除法可以得到正确答案(如果删除分数)。

答案 1 :(得分:1)

您可以使用带有数字的字符串并删除最后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));