跳到主要内容

信息存储与字长

字节、地址和虚拟地址空间是什么关系?​

  • 字节: 8 个二进制位组成的块, 是最小可寻址的内存单位;
  • 地址: 内存中每个字节的唯一数字编号;
  • 虚拟地址空间: 所有可能地址构成的集合;
  • 机器视角: 内存是一个巨大的字节数组, 用地址做下标;

字长决定什么?​

  • 定义: 字长是机器一次处理的最大字, 也是地址与指针的宽度;
  • 决定虚拟地址空间的上限;
  • 常见取值: 32 位对应 4 GB, 64 位对应 16 EB;
  • 兼容性: 32 位程序可以运行在 64 位机器上, 但只使用 32 位地址空间;

大端法和小端法有什么区别?​

  • 小端法: 最低有效字节存放在最低地址;
  • 大端法: 最高有效字节存放在最低地址;
  • 可见场景: 跨机器交换二进制数据、阅读内存转储时才会暴露;
  • 无关场景: 字符串与机器代码的字节顺序在各平台一致;
值 0x01234567 从地址 0x100 起存放
小端法: 67 45 23 01
大端法: 01 23 45 67

字符串和机器代码在内存中各有什么特点?​

维度字符串机器代码
编码ASCII 每字符 1 字节, Unicode 4 字节指令的二进制编码
兼容性跨操作系统结果相同依赖指令集与操作系统
结尾以字节 0 结尾无特殊结尾