大小端模式
4字节 int:
01 23 45 67 H
19088743 D
0000 0001 0010 0011 0100 0101 0110 0111 B
大端方式:(便于人类阅读)
低地址存储高位数据
存储位置 | 0800H | 0801H | 0802H | 0803H | |
---|---|---|---|---|---|
存储数据 | 01H | 23H | 45H | 67H |
小端方式:(便于机器处理)
低地址存储低位数据
存储位置 | 0800H | 0801H | 0802H | 0803H | |
---|---|---|---|---|---|
存储数据 | 67H | 45H | 23H | 01H |
边界对齐
计算机是按照字节编址,每个字节对应一个地址。
通常也支持按字、按半字、按字节寻址。
16位位机器字长为16bit、半字为8bit、一个字为2个字节。
32位机器字长为32bit、半字为16bit、一个字为4个字节。
64位机器字长为64bit、半字为32bit、一个字为8个字节。
假设存储字长为32位,一个字为32bit。每次访存只能读/写一个字。
边界对齐方式:(空间换时间)
字节1 | 字节2 | 字节3 | 填充 |
---|---|---|---|
半字1-1 | 半字1-2 | 半字2-1 | 半字2-1 |
半字3-1 | 半字3-2 | 填充 | 填充 |
字1-1 | 字1-2 | 字1-3 | 字1-4 |
每次访存只能访问一个字(一行),边界对齐导致每次可能有未利用地空间。但是这样提高了读取和存取的速度。
边界不对齐方式:(时间换空间)
字节1 | 字节2 | 字节3 | 半字1-1 |
---|---|---|---|
半字1-2 | 半字2-1 | 半字2-1 | 半字3-1 |
半字3-2 | 字1-1 | 字1-2 | 字1-3 |
字1-4 |
每次访存只能访问一个字(一行),边界不对齐导致每次可能读取到了不完整的数据,完美利用了空间。需要对数据进行拼接,这样降低了读取和存取的速度。