位操作

本文深入解析了位逻辑运算符的用法,包括掩码、打开位、关闭位、转置位和查看一位的值,并通过实例展示了如何在实际编程中应用这些运算符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

位逻辑运算符

~:二进制反码或者按位取反
&:逐位比较产生一个新值。只有两个操作数的对应位都为1时结果才是1。
|位或:按位比较,有一个为1则取值为1
^:位异或

1、用法:掩码

使用位和 &
就是某些位设为开(1)而某些位设置为关(0)的位组合。
用于覆盖某个变量的某些位。

2、用法:打开位

使用位或 |
把某个变量的特定位打开。

3、用法:关闭位

使用& ~把特定位关闭

4、用法:转置位

使用^

5、用法:查看一位的值

判断flag的第一位是否和mask相同。

flag = 10110101;
mask = 00000010if (flag == mask) {
    printf("wow");
}//不能工作

因为flag中的其它位也会和mask比较,产生其它的结果。

if ((flag & mask) == mask) {
    printf("wow");
}//可以工作!

位字段

struct {
    unsigned int a : 1;
    unsigned int b : 2;
    unsigned int c : 3;
} prnt;
prnt.a = 0;
prnt.b = 1;
prnt.c = 100;

使用位字段决定每个字段的宽度,也就是说,a只能赋值不超过1的数。
必须确保值没有超过字段的容量。
如果超过了,就会在下一个unsigned int储存位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值