我有点理解JS使用浮点数并在进行移位时将它们转换为整数,从而产生与其他语言不同的值:
1801876324 << 25
在JS中输出-939524096
但在其他语言中输出的值更长(147634913777578...
)
我如何模仿JS的行为?
答案 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