c/c++ | 位运算 | 使用场景

2023-12-15 11:52:17

位运算 ,应该是最朴素的逻辑运算

##############################

#按位与(&)
| 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;     // 翻转所有位


###########################

后续还会持续更新,匆匆记录,搭个框架出来先,位运算的场景其实还有很多

文章来源:https://blog.csdn.net/ttxiaoxiaobai/article/details/135009095
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。