-
与(&):两个操作数的对应位都为1时,结果的该位为1,否则为0。
-
异或(^):两个操作数的对应位不同时,结果的该位为1,否则为0。
-
取反(~):对操作数的每一位取反,1变0,0变1。
-
或(|):两个操作数的对应位有一个为1时,结果的该位为1,否则为0。
-
左移(
<<
):将二进制位向左移动,右侧补0。 -
右移(
>>
):将二进制位向右移动,左侧补0(逻辑右移)或补符号位(算术右移)。 -
&=
:按位与后赋值。 -
|=
:按位或后赋值。 -
^=
:按位异或后赋值。 -
<<=
:左移后赋值。 -
>>=
:右移后赋值。
运算符 | 名称 | 功能描述 | 示例 | |||
---|---|---|---|---|---|---|
& | 与(AND) | 两个操作数的对应位都为1时,结果的该位为1,否则为0。 | 0b1010 & 0b1100 = 0b1000 | |||
^ | 异或(XOR) | 两个操作数的对应位不同时,结果的该位为1,否则为0。 | 0b1010 ^ 0b1100 = 0b0110 | |||
~ | 取反(NOT) | 对操作数的每一位取反,1变0,0变1。 | ~0b1010 = 0b0101 (假设8位) | |||
` | ` | 或(OR) | 两个操作数的对应位有一个为1时,结果的该位为1,否则为0。 | `0b1010 | 0b1100 = 0b1110` | |
<< | 左移(Left Shift) | 将二进制位向左移动,右侧补0。 | 0b1010 << 2 = 0b101000 | |||
>> | 右移(Right Shift) | 将二进制位向右移动,左侧补0(逻辑右移)或补符号位(算术右移)。 | 0b1010 >> 2 = 0b0010 | |||
&= | 与后赋值 | 对两个操作数进行按位与运算,并将结果赋值给左操作数。 | a &= b 等价于 a = a & b | |||
` | =` | 或后赋值 | 对两个操作数进行按位或运算,并将结果赋值给左操作数。 | `a | = b等价于 a = a | b` |
^= | 异或后赋值 | 对两个操作数进行按位异或运算,并将结果赋值给左操作数。 | a ^= b 等价于 a = a ^ b | |||
<<= | 左移后赋值 | 将左操作数的二进制位向左移动,并将结果赋值给左操作数。 | a <<= 2 等价于 a = a << 2 | |||
>>= | 右移后赋值 | 将左操作数的二进制位向右移动,并将结果赋值给左操作数。 | a >>= 2 等价于 a = a >> 2 |