C/C++ 中的位运算及其典型应用
C/C++ 中提供了6种位运算,对于每一种都很好理解。位运算比较简单,但是如果能灵活应用往往能取得预想不到的效果。这里将不会一一介绍其定义,这里的重点是介绍一些比较经典的应用。如果对其定义还不是很熟悉的朋友可以参考位运算。需要注意的是负数按补码形式参加位运算。
操作符 | 标记 |
---|---|
& | 按位与 |
| | 按位或 |
~ | 取反 |
^ | 按位异或 |
<< | 左移 |
>> | 右移 |
1. 按位与
1.1 判断奇偶
int x = 100;
int y = 1;
std::cout << x << (x & y ? " is odd" : " is even") << std::endl;
1.2 取指定位数的值
上面的情况可以看作是取x最后一位的值,根据最后一位是0还是1来判断奇偶,更一般的我们可以通过控制y来提取不同位置的值。
int x = 0b1