第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类型限定符使我们可以通知编译器,程序中的某些数据是“易变”的。
posted @ 2025-03-28 09:28  StarAire  阅读(20)  评论(0)    收藏  举报