
位运算符直接对整数在内存中的二进制位进行操作,效率高,常用于底层编程、状态压缩和算法优化。C++提供了6个基本的位运算符,掌握它们能帮助你写出更高效的代码。
基本位运算符说明C++中常用的位运算符包括:
- &:按位与,两个对应位都为1时结果为1
- |:按位或,任一对应位为1时结果为1
- ^:按位异或,对应位不同时为1
- ~:按位取反,0变1,1变0
- <<:左移,将二进制位向左移动指定位置,右边补0
- >>:右移,将二进制位向右移动指定位置,左边补符号位(有符号)或0(无符号)
例如:
Post AI
博客文章AI生成器
50
查看详情
int a = 5; // 二进制: 101int b = 3; // 二进制: 011
a & b; // 结果: 1 (001)
a | b; // 结果: 7 (111)
a ^ b; // 结果: 6 (110)
~a; // 结果: -6(补码表示) 常用技巧与应用场景
位运算在实际编程中有许多高效用法:
- 判断奇偶性:x & 1 == 0 表示偶数,否则为奇数
- 快速乘除2的幂:x << n 相当于 x * (2^n),x >> n 相当于 x / (2^n)(正数)
- 交换两个数:a ^= b; b ^= a; a ^= b; 可不用临时变量
- 清除最低位的1:x & (x - 1) 常用于统计1的个数
- 提取最低位的1:x & (-x)
-
设置或清除某一位:
- 设置第n位:x |= (1 << n)
- 清除第n位:x & ~(1 << n)
- 检查第n位是否为1:(x >> n) & 1
以下是一些常见问题的位运算解法:
-
统计二进制中1的个数:
int count = 0;
while(n) {
n &= n - 1;
count++;
} - 判断是否为2的幂:(n > 0) && ((n & (n - 1)) == 0)
- 只出现一次的数字:数组中其他数都出现两次,找出唯一的那个 —— 使用全部异或,结果即为答案
基本上就这些。位运算看似简单,但灵活使用可以极大提升程序性能,尤其在处理标志位、状态机、哈希计算等场景时非常实用。关键是理解二进制表示和每种操作的本质效果。
以上就是C++位运算符基础与常见操作的详细内容,更多请关注知识资源分享宝库其它相关文章!
相关标签: c++ 常见问题 运算符 count while 位运算符 int 算法 大家都在看: C++如何使用模板实现算法策略模式 C++如何处理标准容器操作异常 C++如何使用右值引用与智能指针提高效率 C++如何使用STL算法实现累加统计 C++使用VSCode和CMake搭建项目环境方法






发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。