情况如下:

/// returns 406913024, but should 417018740736
    alert(6363201 << 16);


怎么了?我在ruby中尝试了同样的方法,它返回正确的值(http://www.miniwebtool.com/bitwise-calculator/bit-shift/?data_type=10&number=6363201&place=16&operator=Shift+Left

最佳答案

在JavaScript中,您正在处理32位数字。

6363201 << 16产生110000100011000010000010000000000000000,这是39位。舍弃前7位(因为您是从右移到左,因此您最终得到00011000010000010000000000000000,其中的(二进制)parseInt将显示为406913024,而不是417018740736)。

08-08 05:42