一、题目描述
“内存寻址的最小单位是字节”——明白。
“每个字节有唯一的编号,称为地址”——明白。
“C++中int
通常为四个字节”——了解。
“int x = 1;
最低字节是1还是0?——纳尼?
事实上,这里有点小小分歧:
- 多字节数据中(例如
0x12345678
):- 权重最大的字节称为:MSB,Most Significant Byte。(例中
0x12
所在字节) - 权重最小的字节称为:LSB,Least Significant Byte。(例中
0x78
所在字节)
- 权重最大的字节称为:MSB,Most Significant Byte。(例中
- 多字节数据中,从低地址往高地址依次存放:
LSB...MSB
,称为小端序(LE, little-endian)MSB...LSB
,称为大端序(BE, big-endian)- 极少数CPU使用混合序(middle-endian, mixed-endian),例如
0x12345678
在内存中地址由低到高为34 12 78 56
。 - 有些CPU对LE、BE都支持,可以切换,称为
Bi-Endianness
。