在计算机系统中,我们是以字节为单位的,每个字节8bit,对于多位数据,如16bit,32bit,就要用多个寄存器,而存放顺序分两种:大端模式(Big-Endian)和小端模式(Little-Endian)。常用的X86结构是小端模式,大部分ARM,DSP都为小端模式。计算机网络传输使用的是大端模式。
例子:
存放数据0x 12 34 56 78,大端模式如下:
地址 | 数据 |
0x00 | 0x12 |
0x01 | 0x34 |
0x02 | 0x56 |
0x03 | 0x78 |
大端模式的存储方式是数据高位放低地址位,低位放高地址位。
小端模式如下:
地址 | 数据 |
0x00 | 0x78 |
0x01 | 0x56 |
0x02 | 0x34 |
0x03 | 0x12 |
小端模式的存储方式是数据高位放高地址位,数据低位放低地址位。
大端模式和小端模式两种存储方式区别在于大端模式更贴近人的阅读习惯,而小端模式更贴近机器思想。
联合体存储数据是由内存的低位开始存起,而且联合体内变量公用存储空间,可以通过这个特性来判断CPU工作的模式。
void BigOrLittle()
{
union w
{
int a;
char b;
}check;
check.a = 1;
if (check.b == 1)
{
cout << "CPU是小端模式。" << endl;
}
else
{
cout << "CPU是大端模式。" << endl;
}
}