信息存储与字长
字节、地址和虚拟地址空间是什么关系?
- 字节: 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 结尾 | 无特殊结尾 |