1. 为什么需要位运算符?
在C/C++编程中,位运算符(Bitwise Operators)是一组直接操作整数二进制位的运算符。它们之所以重要,是因为:
- 底层硬件操作:计算机硬件本质上是以二进制形式处理数据,位运算直接对应CPU的指令,执行效率极高
- 内存优化:通过位运算可以用一个整型变量存储多个布尔值,极大节省内存空间
- 算法优化:许多高效算法(如哈希、加密、压缩)都依赖位运算实现
- 设备驱动开发:硬件寄存器操作、协议解析等场景必须使用位运算
注意:虽然现代编译器已经非常智能,但在性能敏感的领域(如图形处理、嵌入式系统),合理使用位运算仍能带来显著提升。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. C/C++中的6种位运算符详解
2.1 按位与(&)
c复制int a = 5; // 0101
int b = 3; // 0011
int c = a & b; // 0001 (1)
工作原理:两个操作数对应位都为1时,结果位才为1,否则为0。
典型应用场景:
- 掩码操作(提取特定位)
- 判断奇偶(
num & 1) - 清零特定位
2.2 按位或(|)
c复制int a = 5; // 0101
int b = 3; // 0011
int c = a | b; // 0111 (7)
工作原理:两个操作数对应位有一个为1时,结果位就为1。
典型应用场景:
- 设置特定位
- 合并标志位
- 快速计算大于等于当前数的最小2的幂
2.3 按位异或(^)
c复制int a = 5; // 0101
int b = 3; // 0011
int c = a ^ b; // 0110 (6)
工作原理:两个操作数对应位不同时结果为1,相同时为0。
独特性质:
- 任何数与自己异或结果为0
- 异或同一个数两次会还原原值
- 满足交换律和结合律
典型应用场景:
- 交换两个变量的值(不使用临时变量)
- 简单加密/解密
- 找出数组中只出现一次的数字
2.4 按位取反(~)
c复制int a = 5; // 0000 0101
