1、小端与大端
对于一个由2个字节组成的16位整数,在内存中存储这两个字节有两种方法:一种是将低序字节存储在起始地址,这称为小端(little-endian)字节序;另一种方法是将高序字节存储在起始地址,这称为大端(big-endian)字节序。
2、下面是两个具体例子:
16bit宽的数0x1234在Little-endian模式(以及Big-endian模式)CPU内存中的存放方式(假设从地址0x4000开始存放)为:
内存地址 小端模式存放内容 大端模式存放内容
0x4000 0x34 0x12
0x4001 0x12 0x34
32bit宽的数0x12345678在Little-endian模式以及Big-endian模式)CPU内存中的存放方式(假设从地址0x4000开始存放)为:
内存地址 小端模式存放内容 大端模式存放内容
0x4000 0x78 0x12
0x4001 0x56 0x34
0x4002 0x34 0x56
0x4003 0x12 0x78
3、为什么有大端小端
两种格式都有系统在使用。测试主机使用的是哪种模式的简单代码如下:
#include
using namespace std;
int main()
{
union{
short s;
char c[sizeof(short)];
}un;
un.s=0x0102;
if (sizeof(short)==2)
{
if (un.c[0]==1 && un.c[1]==2)
{
cout<<”big endian”<