js中较大的数值进行右移位运算,结果不正确

一般来讲,右移一位的位运算,相当于除2,例如100>>2===25,
但是对于较大的数右移位运算,完全不正确
var id = 386547056836608
console.log(id>>8);
结果768
正确的结果1509949440768
测试右移8,16,24,32位右移,结果都不同,这个是js本身的位数限制,还是其它的问题?

阅读 4.6k
1 个回答

JS 在进行位运算前使用进行toInt32或是toUint32 进行类型转换,也就是说所有的为操作都是只取对应的 32 bits 来进行的。

function toInt32(x) { return x>>0; }
function toUint32(x) { return x>>>0; }

toInt32(386547056836608); // 19668
19668 / 256 == 768;

http://www.ecma-international...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题