内存以字节为单位保存信息,每个字节都有一个编号,这个编号就是内存地址。

一个 int a = 0x12345678 变量占用 4 个字节,而变量的地址为变量 a 在内存中的最低地址,比如 &a0x100 时,说明 a 在内存中的位置为 0x100 0x101 0x102 0x103

如果系统为小端序,则将 a 的低位放到低地址,高位放到高地址:

1
2
3
0x100 0x101 0x102 0x103

0x78  0x56  0x34  0x12

如果系统为大端序,则将 a 的低位放到高地址,高位放到低地址:

1
2
3
0x100 0x101 0x102 0x103

0x12  0x34  0x56  0x78

按照上面的排列,可以写一个简单的程序判断系统为小端序还是大端序

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#include <iostream>

using namespace std;

int main(int argc, char* argv[]) {

    int a = 0x12345678;

    char* b = (char*)&a;
    if (*b == 0x78) {
        cout << "System is little endian" << endl;
    }

    if (*b == 0x12) {
        cout << "System is big endian" << endl;
    }

    return 0;
}
1
System is little endian