大端与小端

大端(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)默认采用小端

优劣势对比

img

三、如何判断系统字节序?

通过代码检测

#include <stdio.h>

int main() 
{
    int num = 0x12345678;
    char *p = (char*)&num;
    
    if (*p == 0x78) 
    {
        printf("小端(Little-Endian)\n");
    } 
    else if (*p == 0x12) 
    {
        printf("大端(Big-Endian)\n");
    }
    return 0;
}
posted @ 2025-10-10 22:26  开心猪扒  阅读(31)  评论(0)    收藏  举报