字的排列顺序
- MSB
最高有效位,Most significant bit - LSB
最低有效位,Least significant bit
如:1011,他的MSB是0,LSB是1。
如果按MSB排列:1101 0000 0000 0000 0000 0000 0000 0000(高到低位从左往右)
如果按LSB排列 :0000 0000 0000 0000 0000 0000 0000 1011(高到低位从右往左)
大端与小端
大端方式:MSB所在的地址是数的地址
小端方式:LSB所在的地址是数的地址
将16进制数ABCDH放在地址是1000的地方?
- 大端:
AB–>1001
CD–>1000 - 小端:
CD–>1001
AB–>1000
数据对齐
各种不同长度的数据存放时,有两种处理方式:
- 按边界对齐(设字的宽度是32位,按字节编址)
- 字地址(4的倍数)
- 半字地址(2的倍数)
- 字节地址(任意)
假设要储存int,short,double,char,short 5个数据。按int占4个字节,short占2个字节,double占8个字节,char占1个字节。
int按字对齐,short按半字对齐,double按字对齐,char按字节对齐。
浪费空间,但访问速度快。
每行是一个周期,按字的宽度是32位看,一行有4个字节。
蓝色的地址是00,绿色的地址是18。
- 不按地址对齐
(同上)假设要储存int,short,double,char,short 5个数据。按int占4个字节,short占2个字节,double占8个字节,char占1个字节。
虽然占的空间小了,但增加了访存次数。一个double类型需要访问3个周期。
灰色的地址是06,绿色的地址是15。