为了测试,我写了一个简单的函数:
function test() {
var val = -1878897367 & 0xfffffff0;
console.log(val);
val = -2146277048 & 0xfffffff0;
console.log(val);
}
在台式计算机上运行的结果:
-1878897376
-2146277056
在手机上运行的结果(Android 4.2或2.3.4上的Phonegap):
268586281
1206600
为什么会这样?
答案 0 :(得分:0)
我相信这背后的原因是操作系统的不同种类。按位运算符用于32位整数。根据操作系统中使用的位,按位运算的结果会有所不同。
答案 1 :(得分:0)
当然这是一个错误:
toInt32(-1878897367) & toInt32(0xfffffff0) =
-1878897367 & -16 =
10010000000000100100110100101001 & 11111111111111111111111111110000 =
10010000000000100100110100100000 =
-1878897376