CPU中的Little Endian与Big Endian
今天在学习利用buildroot编译软件包的时候,make menuconfig
之后在Target Architecture
选项中发现了同一种CPU架构中有两个不同的选项,分别是little endian
和big endian
,如下图:
在好奇心的驱使下我就必应了一下,原来是不同CPU存储字节的顺序不同。
Little Endian与Big Endian简介
在所有的介绍字节序的文章中都会提到字节序分为两类:Big-Endian和Little-Endian,引用标准的Big-Endian和Little-Endian的定义如下:
- Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
- Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
- 网络字节序:TCP/IP各层协议将字节序定义为Big-Endian,因此TCP/IP协议中使用的字节序通常称之为网络字节序。
比如int a = 0x05060708
在BIG-ENDIAN
的情况下存放为:
字节号 | 0 | 1 | 2 |
---|