第20章 底层程序设计
{% markmap %}
第20章 底层程序设计
位运算符
- 移位运算符
<<- 左移位
>>- 右移位
- 逻辑运算符
&- 按位与
|- 按位或
~- 按位取反
^- 按位异或
- 用位运算符访问位
- 位的设置
i |= 1 << j;
- 位的清除
i &= ~(1 << j);
- 查某一位是否被设置
if (i & 1 << j)- 新节点
- 新节点
- 位的设置
- 用位运算符访问位域
- 处理一组连续的位(位域)
- 修改位域
- 修改位域需要使用按位与(用来清除位域),接着使用按位或(用来将新的位存入位域)。
- 获取位域
- 当位域处在数的右端(最低有效位)时,获得它的值非常方便。
- 如果位域不在i的右端,那首先需要将位域移位至右端,再使用运算符&提取位域
结构中的位域
struct file_date {
unsigned int day: 5;
unsigned int month: 4;
unsigned int year: 7;
};
其他底层技术
- 定义依赖机器的类型
typedef unsigned char BYTE;typedef unsigned short WORD;
- 用联合提供数据的多个视角
- 将指针作为地址使用
volatile限定符- 在一些计算机中,一部分内存空间是“易变”的,保存在这种内存空间的值可能会在程序运行期间发生改变,即使程序自身并未试图存放新值。
- volatile类型限定符使我们可以通知编译器,程序中的某些数据是“易变”的。

浙公网安备 33010602011771号