Big Endian(大端)指最高有效字节在内存的低地址位;Little Endian(小端)指最低有效字节在内存的低地址位。
具体来说,对于单个字节的数据,不存在大小端的问题。对于多字节的数据类型,其字节是如何在内存中分布的呢? 比如一个int,在32位的机器上占用4个字节,假定其值为0x12345678,内存地址为0x1000 - 0x1003,那么这个值在0x1000、0x1001、0x1002、0x1003上的分布见下表:
0x1000 | 0x1001 | 0x1002 | 0x1003 | |
---|---|---|---|---|
Big Endian | 12 | 34 | 56 | 78 |
Little Endian | 78 | 56 | 34 | 12 |
大小端只是存储的一个原理,取决于主机和操作系统,而且不光出现在内存中,因此实际编程中对于有些I/O操作可能需要对字节序有一个更灵活的考虑。大端更符合人的阅读习惯,不过对于机器来说就不存在这个问题了。
网友评论