模拟JavaScript的按位移位行为

时间:2018-01-02 03:06:11

标签: javascript

我有点理解JS使用浮点数并在进行移位时将它们转换为整数,从而产生与其他语言不同的值:

1801876324 << 25

在JS中输出-939524096但在其他语言中输出的值更长(147634913777578...

我如何模仿JS的行为?

2 个答案:

答案 0 :(得分:2)

你的想法很正确。

考虑: hex(1801876324)== 0x6b667364

hex(1801876324&lt;&lt; 25)== 0xd6cce6c8000000

截断到32位后,最终值将为0xc8000000,在二进制补码算法中恰好等于-939524096。

答案 1 :(得分:0)

换算数字意味着只需加倍或除以2 ^ numbits,如。

for(i=0;i<numdigit;i++) largeNum = largeNum*2

  

for(i=0;i<numdigit;i++) largeNum = largeNum/2