Skip to content

2.5 基本数据表示与高级数据表示

本节内容较为抽象,从更高层次探讨了数据的表示方式,区分了由硬件直接支持的基本数据类型和需要软件或更复杂硬件结构支持的高级数据类型。

核心概念

1. C语言中的基本数据表示

  • 这部分是对前面知识的总结和应用,将计算机底层的二进制表示与高级语言(如C语言)的数据类型对应起来。
    • 整数类型 (int, short, long, char):通常用补码表示。unsigned 类型则为无符号数。
    • 实数类型 (float, double):对应IEEE 754单精度和双精度浮点数。
    • 字符类型 (char):对应ASCII码。

2. 高级数据表示

高级数据表示通常不是由单个硬件指令直接支持的,而是通过软件或专门的硬件结构来管理和访问。

  • 带标志符的数据表示

    • 思想:为每个数据附加一个类型标志位(tag),如整数、浮点数、地址等。
    • 优点
      • 允许使用通用操作指令(如一个ADD指令可以处理不同类型的数据)。
      • 简化了指令系统和编译过程。
    • 缺点
      • 增加了数据存储的开销。
      • 硬件逻辑更复杂。
  • 数据描述符

    • 思想:将数据的类型、地址、长度等描述信息与数据本身分开存放。描述信息单独存储在一个“描述符”中。
    • 应用:非常适合用于处理向量、数组等成块数据
    • 优点
      • 相比为每个元素都加标志符,大大节省了存储空间。
      • 为向量机、数组处理机等提供了硬件支持,便于实现高效的并行运算。
  • 向量数组数据表示

    • 在向量机或具有向量指令集的处理器中,通过专门的向量寄存器向量指令来高效处理整个数组或向量。
    • 一条向量指令可以完成对整个数据集合的操作,极大地减少了指令读取和译码的开销,是实现数据级并行的重要方式。

学习建议: 本节内容偏向于体系结构层面,理解概念为主。重点是明白计算机为了支持更复杂的数据结构(如数组)和更灵活的编程范式(如动态类型语言),是如何在硬件层面进行数据表示的演进的。