运算符

幂运算符 **

Exponentiation (**) - MDNopen in new window

按位运算符

按位操作符(Bitwise operators) 将其操作数(operands)当作 32 位的比特序列(由01组成),而不是十进制、十六进制或八进制数值。例如,十进制数9,用二进制表示则为1001。按位操作符操作数字的二进制形式,但是返回值依然是标准的 JavaScript 数值。

运算符用法描述
按位与( AND)a & b对于每一个比特位,只有两个操作数相应的比特位都是1时,结果才为1,否则为0。
按位或(OR)`ab`
按位异或(XOR)a ^ b对于每一个比特位,当两个操作数相应的比特位有且只有一个1时,结果为1,否则为0。
按位非(NOT)~ a反转操作数的比特位,即0变成1,1变成0。
左移(Left shift)a << b将 a 的二进制形式向左移 b (< 32) 比特位,右边用0填充。
有符号右移a >> b将 a 的二进制表示向右移 b (< 32) 位,丢弃被移出的位。
无符号右移a >>> b将 a 的二进制表示向右移 b (< 32) 位,丢弃被移出的位,并使用 0 在左侧填充。

判断数值奇偶性

n & 1相当于n % 2,当n为奇数时,n & 1的值为1;当n为偶数时,n & 1的值为0

原始表达式对应的二进制表达式结果
1 & 10001 & 00011
2 & 10010 & 00010
3 & 10011 & 00011
4 & 10100 & 00010
5 & 10101 & 00011
6 & 10110 & 00010
7 & 10111 & 00011
8 & 11000 & 00010

数值取整

如下几种按位运算表达式都相当于parseInt(a):

  • a | 0
  • a ^ 0
  • a << 0
  • a >> 0
  • ~~a