第十五章 - DDL-Killer/The-road-of-Linxu-Group2024 GitHub Wiki
二进制数、位和字节
按位逻辑运算符
- 二进制反码或按位取反:~
- 按位与:&
- 按位或:|
- 按位异或:^
用法:掩码
- &
- 把掩码中的0看作不透明,1看作透明,只有掩码的1可见
用法:打开位(设置位)
- 其他位保持不变,使用|
- 把MASK中需要“打开”的值传递给FLAG,同时保证FLAG不变
用法:关闭位(清空位)
用法:切换位
- 无论值是0还是1,a^0都是自身
- 用一个MASK,不变的位为0,变的位为1
- ^
用法:检查位的值
- 比较哪一位,使用MASK就与哪一位相同,其余相反
- 先跟MASK进行按位与&,确保除了比较的哪一位之外,其余位相同
- 然后带括号进行==比较
移位运算符
- 左移:<<
- 左侧运算对象每一位的值向左移动其右侧运算对象指定的位数
- 左侧对象移出左末端位的值丢失,用0填充空出的位置
- 右移:>>
- 右移运算对象每一位的值向右移动其右侧运算对象指定的位数
- 对于无符号类型,用0填充
- 对于有符号类型,取决于机器
- 用法:移位运算符
位字段
- 位字段是一个signed int 或unsigned int 类型变量中的一组相邻的位
- 位字段通过一个结构声明来建立,该结构声明为每个字段提供标签,并确定该字段的宽度

- 该声明,prnt包含4个1位的字段,通过普通的结构成员运算符(.)单独给这些字段赋值