运算符
幂运算符 **
Exponentiation (**) - MDNopen in new window
按位运算符
按位操作符(Bitwise operators
) 将其操作数(operands
)当作 32 位的比特序列(由0
和1
组成),而不是十进制、十六进制或八进制数值。例如,十进制数9
,用二进制表示则为1001
。按位操作符操作数字的二进制形式,但是返回值依然是标准的 JavaScript 数值。
运算符 | 用法 | 描述 |
---|---|---|
按位与( AND) | a & b | 对于每一个比特位,只有两个操作数相应的比特位都是1时,结果才为1,否则为0。 |
按位或(OR) | `a | b` |
按位异或(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 & 1 | 0001 & 0001 | 1 |
2 & 1 | 0010 & 0001 | 0 |
3 & 1 | 0011 & 0001 | 1 |
4 & 1 | 0100 & 0001 | 0 |
5 & 1 | 0101 & 0001 | 1 |
6 & 1 | 0110 & 0001 | 0 |
7 & 1 | 0111 & 0001 | 1 |
8 & 1 | 1000 & 0001 | 0 |
数值取整
如下几种按位运算表达式都相当于parseInt(a)
:
a | 0
a ^ 0
a << 0
a >> 0
~~a