大端小端
一、定义
-
Little-Endian 低位字节放在内存的低地址端,高位字节放在内存的高地址端。
-
Big-Endian 高位字节放在内存的低地址端,低位字节放在内存的高地址端
例如:0x12 34 56 78在内存中的表现形式 小端模式: 低地址------------------à高地址 0x78 0x56 0x34 0x12 大端模式: 低地址------------------à高地址 0x12 0x34 0x56 0x78
二、优劣势、
-
Little-Endian 强制转换不需要调整字节内容,1、2、4字节的存储方式一样。
- Big-Endian 符号位的判断固定为第一字节,容易判断正负。
三、为什么有大小端之分?
- 字节为计算机内存的基本单位,每一个内存地址都对应一个字节,而已数据又不仅仅有char,还有short、int等,寄存器的宽度大于一个字节,必然存在排列的问题。常见的X86结构是小端模式,而KEIL C51是大端模式。很多的ARM、DSP都为小端模式。还有一些RAM是由硬件的选择处理为大端还是小端模式。
四、常见的字节序
-
一般操作系统为小端模式,而通讯协议为大端模式。
- 常见的CPU
-
Big-Endian:PowerPC、IBM、Sun
-
Little-Endian:x86、DEC
-
ARM既可以工作在大端模式也可以工作在小端模式。
-
- 常见的文件字节序
-
Big-Endian:Adobe PS、JPEG MacPaint
-
Little-Endian:BMP、GIF、RTF
-
Java和所有的网络通讯协议都是使用Big-Endian的编码。
-