| 运算符 | & | | | ^ | ~ | << | >> | | --- | --- | --- | --- | --- | --- | --- | | 说明 | 按位与 | 按位或 | 按位异或 | 取反 | 左移 | 右移 |
按位异或运算(^)
参与^运算两个二进制位不同时,结果为1,相同时结果为 0。
按位异或运算可以用来将某些二进制位反转。
例如要把 n 的高 16 位反转,保留低16 位,可以进行n ^ 0XFFFF0000运算
使用异或交换两个数:
a ^=b;
b ^= a;
a ^= b;
原理:一个数异或另一个数两次后,该数保持不变。
“简写”: (a ^= (b ^= (a ^= b)))
左移与右移
如果数据较小,被丢弃的高位不包含 1,那么左移 n 位相当于乘以 2 的 n 次方。
如果被丢弃的低位不包含 1,那么右移 n 位相当于除以 2 的 n 次方(但被移除的位中经常会包含 1)
注意:右移时会自动保留有符号int的符号位 例如:有符号int 0b1100>>2=0b1011