按位与(&)和按位或(|)是c语言中用于操作二进制位的重要运算符。1. 按位与(&)的规则是两个对应位都为1时结果才为1,可用于提取特定位或清零某些位;2. 按位或(|)的规则是任意一个对应位为1则结果为1,常用于设置特定位为1或合并多个标志位;3. 实际应用包括权限控制、通信协议解析、压缩加密算法及图形处理;4. 使用时建议采用十六进制或二进制常量增强可读性,并注意运算符优先级和逻辑运算符的区别。掌握这两个运算符有助于编写高效底层代码,尤其适用于嵌入式开发和性能优化领域。

在C语言中,
&
|
&
按位与的基本规则是:两个操作数的对应二进制位都为1时,结果才为1;否则为0。
举个例子:
立即学习“C语言免费学习笔记(深入)”;
int a = 5; // 二进制:0101 int b = 3; // 二进制:0011 int c = a & b; // 结果是 0001,即十进制的1
常见用途:
提取特定位
比如想判断一个整数的第3位是否为1,可以构造一个掩码(mask),然后与原数做按位与:
int num = 0b101010;
if (num & 0b001000) {
// 第3位是1
}清零某些位
把某个位设置为0,其他位不变,也可以通过掩码来实现:
int flags = 0b1111; flags = flags & ~0b0010; // 清除第2位,变为 0b1101
|
按位或的规则是:两个操作数的对应二进制位只要有一个为1,结果就为1。
看个例子:
int a = 4; // 二进制:0100 int b = 6; // 二进制:0110 int c = a | b; // 结果是 0110,即十进制的6
常见用途:
设置特定位为1
如果你想把某个位设为1,可以用按位或配合掩码:
int flags = 0b1000; flags |= 0b0010; // 设置第2位为1,变成 0b1010
合并多个标志位
在系统编程中,经常会用一个整型变量来保存多个布尔状态,这时就可以用按位或组合多个标志:
#define FLAG_A 0x01 // 00000001 #define FLAG_B 0x02 // 00000010 #define FLAG_C 0x04 // 00000100 int status = FLAG_A | FLAG_C; // 同时开启A和C
权限控制
通信协议解析
压缩和加密算法
图形处理
0b
&
|
&&
||
&
|
基本上就这些。掌握好位运算符,能在嵌入式开发、性能优化等方面发挥很大作用。
以上就是C语言中的位运算符&和|怎么用?有哪些应用?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号