当前位置: 首页 > news >正文

位运算_常见位运算总结

1.基础位运算

>>:左移一位bit位

<<:右移一位bit位

~:按位取反 0变1 1变0

&:按位与 有0为0

|:按位或 有1为1

^:按位异或 相同为0 相异为1 /无进位相加

2.给一个数n,确定它的二进制中第X位是0还是1

(n>>x)&1 (下标从0开始)

#include <iostream>
using namespace std;bool checkBit(int num, int X) {return (num >> X) & 1;  // 右移X位并与1进行与运算
}int main() {int num = 10;  // 例子:10 的二进制是 1010int X = 1;     // 要检查第1位if (checkBit(num, X)) {cout << "第" << X << "位是1" << endl;} else {cout << "第" << X << "位是0" << endl;}return 0;
}

3.给一个数n,把它二进制中第X位是改为1

n | (1 << X) 

#include <iostream>
using namespace std;int setBit(int n, int X) {return n | (1 << X);  // 设置第X位为1
}int main() {int n = 10;  // 例子:10 的二进制是 1010int X = 1;   // 要设置第1位为1int result = setBit(n, X);cout << "设置第" << X << "位后的结果是: " << result << endl; // 结果将是 10 | 2 = 12(1100)return 0;
}

4.给一个数n,把它二进制中第X位是改为0

n & ~(1 << X)

#include <iostream>
using namespace std;int clearBit(int n, int X) {return n & ~(1 << X);  // 设置第X位为0
}int main() {int n = 10;  // 例子:10 的二进制是 1010int X = 1;   // 要设置第1位为0int result = clearBit(n, X);cout << "设置第" << X << "位后的结果是: " << result << endl; // 结果将是 10 & ~(2) = 8(1000)return 0;
}

5.提取一个数n二进制最右侧的一个1

n & -n 

-n对n的二进制先取反再+1

-n的二进制将最右侧的1,它的左边的区域全变反  再&导致左边全变0

6.去除一个数n二进制最右侧的一个1

n&(n-1)

(n-1)的二进制将最右侧的1,它和它的右边的区域全变反  再&导致最右侧1及它的右边全变0

7.异或运算

1.a^a=0

2.a^0=a

3.a^b^c=a^(b^c)  多个数相异或 即使运算顺序不同但值是不变的


http://www.mrgr.cn/news/70398.html

相关文章:

  • PyQt6+pyqtgraph折线图绘制显示
  • 微知-Mellanox网卡的另外一种升级方式mlxup?(mlxup -d xxx -i xxx.bin)
  • 如何开发一个脚手架
  • 实验3-2
  • 利用浏览器录屏
  • SwiftUI 高级开发教程 - 第一章:深入理解 SwiftUI 的声明式编程
  • C语言 函数
  • mysql:解决windows启动失败无报错(或长时间未响应)
  • c++11(一)
  • 怎么查域名的交易价格?
  • 教育行业该怎么使用电子合同:降本增效,引领教育新未来
  • 如何提升自媒体发稿效果,必须掌握的几个技巧
  • 机器学习—多个输出的分类(Optional)
  • 2024数字化观察:你所需了解的8件事
  • monkey-安卓稳定性测试
  • 【语言建模】数据集合集!
  • 应用于新能源汽车NCV4275CDT50RKG车规级LDO线性电压调节器芯片
  • 【漏洞复现】用友 U8 OA getSessionList.jsp 敏感信息泄漏漏洞
  • 2024年最新项目管理工具推荐:哪些支持自动化测试?
  • 2024年12月一区SCI-加权平均优化算法Weighted average algorithm-附Matlab免费代码
  • 专题十——字符串
  • 网络安全之SQLMAP _DNS注入配置方法
  • MySQL初学之旅(2)增删改查—上
  • 基于微信生态的开源 AI 智能名片 2+1 链动模式 S2B2C 商城小程序源码拉新策略研究
  • linux内存管理学习笔记
  • 制造业怎么用好仓库管理系统?仓库管理系统在制造业中的应用实例