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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!