运算符 | 名字 |
---|---|
& | 按位与 |
| | 按位或 |
^ | 按位异或 |
~ | 取反 |
<< | 左移 |
| 右移
- 结合律:a&b&c = (a&b)&c = a&(b&c)
- 交换律:a&b = b&a
-
左移和右移注意点
- 左移运算符<<将运算数的二进制位左移,规则:高位丢弃,低位补0;
- 右移运算符>>将运算数的二进制位右移,规则:高位补符号位,低位丢弃。
-
防错准则
- 避免位运算符、逻辑运算符和数学运算符同时出现在一个表达式中;
- 当位运算符、逻辑运算符和数学运算符需要同时参与运算时,尽量使用括号()来表达计算次序。
-
小技巧
-
左移n位相当于乘以2的n次方,但效率比数学运算符高;
-
右移n位相当于除以2的n次方,但效率比数学运算符高。
-
异或运算符^
- 偶数个相同的整数异或为0,奇数个相同的整数异或为自身;
- 0跟任意整数异或都为该整数。