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语言内核深度解析》记录,部分摘抄。

猜你喜欢

转载自blog.csdn.net/jiaruitao777/article/details/79944750