数据的存储和排列
数据的“大端方式”和“小端方式”存储
存储数据时,从数据的地位到高位可以从左到右排列,也可以从右到左排列。无法用最左或者最右来表征数据的最高位和最低位,通常用最低有效字节(LSB)表示最低位、最高有效字节(MSB)表示最高位
e.g.在32位计算机中,一个int型变量i的机器数为01 23 45 67H,最高有效字节MSB=01H,最低有效字节LSB=67H
现代计算机基本上都采用字节编址,即每个地址编号中都存放一个字节。不同类型的数据占用的字节数不同,int 和 float 型数据占4个字节,double 型数据占8个字节
等,而程序中对每个数只给定一个地址。
假设变量i的地址为80 00H,字节01H、23H、45H、67H应各有一个内存地址。多字节数据在内存中一定是占连续的几个字节。
地址80 00H对应4个字节中的哪个字节的地址?字节排序问题
大端方式
大端方式:从最高有效字节(MSB)到最低有效字节(LSB)的顺序存储。最高有效字节在前
0800H | 0801H | 0802H | 0803H |
---|---|---|---|
01H | 23H | 45H | 67H |
MSB为01H便于人阅读
小端方式
小端方式:从最低有效字节(LSB)到最高有效字节(MSB)的顺序存储。最低有效字节在前
0800H | 0801H | 0802H | 0803H |
---|---|---|---|
67H | 45H | 23H | 01H |
LSB为67H便于机器处理
边界对齐
现代计算机基本上都采用字节编址,即每个地址编号中都存放一个字节。但也支持字节、半字和字寻址
。
e.g.存储字长为32位。一个字=32bit,半个字=16bit。每次存访只能读/写一个字。
-
边界对齐
访问一个字/半个字都只需一次访存
空间换时间的思想,也就是降低主存空间的实际利用率来换取存储的高效率 -
边界不对齐
访问一个字/半个字可能需要两次访存