javascript - 按位运算符改变算术结果

标签 javascript math bit-manipulation

谁能给我解释一下为什么会出现下面的代码:

  var a = 0xFFFFFFFF;
  a &= 0xFFFFFFFF;
  a += 1;
  alert( "a = " + a );

  var b = 0xFFFFFFFF;
  b += 1;
  alert( "b = " + b );

返回 a 和 b 的不同值?

因为 0xFFFFFFFF 和 0xFFFFFFFF 应该等于 0xFFFFFFFF,所以这两段代码都应该返回 0x100000000。相反,a 获得 0 的值,b 获得 0x100000000 的值。

最佳答案

JS 按位运算符返回一个有符号 32 位整数。 0xFFFFFFFF 被转换为 -1,加 1 得到 0。

关于javascript - 按位运算符改变算术结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5339538/

相关文章:

javascript - math.max() 在 IE 中不起作用

javascript - Webpack 中如何选择输出文件目录?

javascript - 如何获取选中的单选按钮的值?

algorithm - Interviewstreet-排列游戏

mysql - 为什么这个异或操作在mysql中结果为零?

javascript - 按钮在 .appendChild 之后丢失引用

c# - 如何找出一些给定素数最接近 10000 的可能组合?

java - 查找阶乘中的尾随零

c - C 位运算的行为

c++ - z 顺序曲线中的下一次迭代