位操作
1 掩码:设定某位为开,某位为关
#define MASK 00000010
MASK 哪位为1,哪个位就起以下作用
flags &= MASK;
把0看作不透明,把1看做透明
MASK 00000010
flag 10010110
flags &= MASK 10010110
00000010
2 打开位
flags |= MASK;
打开该位,其余位保持不变 X|0 结果为本身 X&0 结果为0
X|1 结果为1 X&1 结果为本身
3 关闭位
flags &= ~MASK;
4 转置位
该位取反
flag ^= MASK;
5 查看某位的值是否为1
if((flag & MASK) == MASK)
移位运算符
1 <<n 左移n位,0补 <<=n 并赋值
2 number<<n number乘以2的n次幂
3 number>>n number(非负)除以2的n次幂
位字段
struct{
unsigned int code1: 2;
unsigned int code2: 2;
unsigned int code3: 8;
} prcode;
创建两个2位字段和一个8位字段
赋值方法:
prcode.code1=0;prcode.code2=3;prcode.code3=5;