C语言的位操作——学习笔记

1 常用的位操作符
位与&、 位或、 位取反~、 位异或^
无符号数:逻辑左移、逻辑右移
有符号数:算数左移、算数右移

2 特定位清零用 &
例如将a 的bit8~bit15清零,其他位不变

a &= 0xffff00ff;

3 特定位置位用 |
例如将a 的bit8~bit15置位,其他位不变

a |= 0xffff00ff;

4 特定位取反用 ^
例如将a 的bit8~bit15置位,其他位不变

a  ^= 0xffff00ff;

5 使用移位位或构建特定位为1的数
例如 获取bit3~bit7为1,bit23~bit 25为1,其余位为0

a = (0x1f<<3) | (0x07<<23); 

6 使用移位位与取反构建特定位为1的数
例如 获取bit3~bit7为0,bit23~bit 25为0,其余位为1

a = ~((0x1f<<3) | (0x07<<23));

7 使用宏定义来完成位操作

#defined SET_BIT_N(x,n)  (x|(1<<n)) //把x的第n位置位
#defined CLR_BIT_N(x,n)  (x&~(1<<n))   //把x的第n位清零

学习朱有鹏版《C语言内核深度解析》记录,部分摘抄。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值