JavaScript处理位移操作的限制
JavaScript只支持对32位数据进行位移操作,即源操作数和目标操作数都必须是32位。对于超过的直接切掉。
在多种浏览器上测试过如下代码:
(0x180000000>>1).toString(16)+" "+(0x100000000>>1).toString(16)+" "+(0x80000000<<1).toString(16)
所有浏览器返回同样结果:
"-40000000 0 0"
即数据被视为有符号数,32位最高位是符号位
测试过的浏览器如下:
MS IE8/11
MS EDGE86
Opera72
FireFox 20/82
Chrome 86