位运算 ,应该是最朴素的逻辑运算
##############################
#按位与(&)
| A | B | A & B |
|---|---|-------|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |##################################
```c++
int value = 0b11010110;
int mask = 0b11110000;
int result = value & mask; // 清除 value 中低四位的值
################################
#亦或运算
#适合,“间隔跳转”,就是“一下子左,一下子右”。“一下子真,一下子假”。“一下子奇,一下子偶”。
| A | B | A XOR B |
|---|---|----------|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
##########################
bool flag = false;
while(true){
//内部逻辑
flag ^= true;
}
##############################
#左移(<<)
###############################
int value = 5;
int result = value << 2; // 将 value 左移两位,相当于 value * 4
###############################
#右移(>>)
##################################
int value = 20;
int result = value >> 2; // 将 value 右移两位,相当于 value / 4
########################################
#按位或(|)
| A | B | A | B |
|---|---|-------|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
#########################################
int value = 0b11010110;
int mask = 0b00001111;
int result = value | mask; // 将 value 中低四位设置为1
#####################################
#按位取反
#| A | ~A |
|---|----|
| 0 | 1 |
| 1 | 0 |
########################
int num = 0b11001010; // 二进制表示
int result = ~num; // 翻转所有位
###########################
后续还会持续更新,匆匆记录,搭个框架出来先,位运算的场景其实还有很多