大端(Big-Endian)和小端(Little-Endian)是计算机存储多字节数据时采用的两种字节序(Byte Order),主要区别在于多字节数据在内存中的存储顺序。
一、核心区别
大端(Big-Endian)
高位字节存于低地址,低位字节存于高地址。例如,对于 32 位整数0x12345678(十六进制):
- 高位字节:0x12(最高位)
- 内存地址从低到高存储:0x12 → 0x34 → 0x56 → 0x78
小端(Little-Endian)
低位字节存于低地址,高位字节存于高地址。同样对于0x12345678:
- 低位字节:0x78(最低位)
- 内存地址从低到高存储:0x78 → 0x56 → 0x34 → 0x12

二、用法场景
大端的典型应用
网络协议(如 TCP/IP):网络字节序规定为大端,确保不同架构设备通信时数据一致。
部分嵌入式系统和老式硬件(如 PowerPC、SPARC)。
小端的典型应用
x86/x64 架构的 CPU(如 Intel、AMD):主流 PC 和服务器常用。
多数操作系统(Windows、Linux x86)默认采用小端
优劣势对比
三、如何判断系统字节序?
通过代码检测
#include <stdio.h>int main()
{int num = 0x12345678;char *p = (char*)#if (*p == 0x78) {printf("小端(Little-Endian)\n");} else if (*p == 0x12) {printf("大端(Big-Endian)\n");}return 0;
}