情况如下:
/// 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)。