Javascript中按位运算结果的差异

时间:2014-02-19 09:30:12

标签: javascript android cordova bit-manipulation difference

为了测试,我写了一个简单的函数:

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

为什么会这样?

2 个答案:

答案 0 :(得分:0)

我相信这背后的原因是操作系统的不同种类。按位运算符用于32位整数。根据操作系统中使用的位,按位运算的结果会有所不同。

答案 1 :(得分:0)

当然这是一个错误:

toInt32(-1878897367) & toInt32(0xfffffff0) =
-1878897367 & -16 =
10010000000000100100110100101001 & 11111111111111111111111111110000 =
10010000000000100100110100100000 =
-1878897376

http://www.ecma-international.org/ecma-262/5.1/#sec-11.10