1. C++位运算符核心概念解析
在底层系统开发、嵌入式编程和性能敏感场景中,位运算符是C++程序员必须掌握的利器。与常规逻辑运算符不同,位运算符直接操作内存中的二进制位,这种"微观层面"的操作带来了极高的执行效率和灵活的内存控制能力。
1.1 位运算与逻辑运算的本质区别
初学者最容易混淆的是位运算符和逻辑运算符的区别。简单来说:
- 逻辑运算符(&&、||)用于布尔表达式判断,返回true/false
- 位运算符(&、|、^)直接操作整数的二进制位,返回新的整数值
举个例子:
cpp复制bool a = true, b = false;
int x = 5, y = 3; // 二进制分别为0101和0011
// 逻辑运算
cout << (a && b); // 输出0(false)
// 位运算
cout << (x & y); // 输出1(0001)
1.2 二进制表示基础
理解位运算的前提是掌握整数的二进制表示。C++中常见整数类型的内存占用:
- char: 1字节(8位)
- short: 2字节(16位)
- int: 通常4字节(32位)
- long long: 8字节(64位)
以int类型的13为例:
code复制十进制: 13
二进制: 00000000 00000000 00000000 00001101
十六进制: 0x0000000D
提示:现代编译器通常使用补码表示负数,最高位为符号位(1表示负数)
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 三大基础位运算符详解
2.1 按位与(&):精准位控制
按位与的运算规则:两个操作数的对应位都为1时,结果位才为1,否则为0。
典型应用场景:
- 掩码操作:提取特定位
cpp复制int flags = 0b1101;
int mask = 0b1010;
int result = flags & mask; // 0b1000
- 奇偶判断:比取模运算更高效
cpp复制bool isOdd = num & 1; // 最末位为1则是奇数
- 清空特定位
cpp复制int clearBit(int num, int pos) {
return num & ~(1 <
