计算机的字节序“大端”和“小端”

本文解释了计算机中“大端”和“小端”存储的概念及其差异,并通过C语言示例展示了如何确定当前计算机系统的字节序。此外,还介绍了网络字节序为何采用大端法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很多书籍中会提到“大端”和“小端”的说法。所谓“大端”和“小端”存储指的是计算机中多于一个字节的数据在内存中的存放方式。某些机器选择在存储器中按照从最低有效字节到最高有效字节的顺序存储对象,而另一些机器则按照从最高有效字节到最低有效字节的顺序存储。前一种规则—最低有效字节在最前面的方式,称为小端法(little endian)。大多数Intel 兼容机都采用这种规则。后一种规则—最高有效字节在最前面的方式,称为大端法(big endian)

例如:一个int类型的值0x12345678,在32位计算机中占4个字节。假设其在内存中的地址为:0x101~0x103,那么大端法和小端法表示分别为:

目前大多数的计算机使用的都是“小端”法

而网络字节序使用的是(big endian)大端法


可以使用c代码来验证,下面的c程序实现把int类型数据各字节的值依次打印出来


#include <stdio.h>

typedef unsigned char *byte_pointer;

void show_bytes(byte_pointer start,int len)
{
	int i;
	for(i = 0; i < len; i++)
	{
		printf("%.2x",start[i]);
		printf("\n");
	}
}

void show_int(int x)
{
	show_bytes((byte_pointer)&x,sizeof(int));
}

void test_show_bytes(int val)
{
    int ival = val;
    show_int(ival);
}

调用test_show_bytes(12345)的输出结果如下图:


十进制 12345的十六进制表示为0x3039,输出结果39 30 00 00 是从低位到高位依次打印出数据,可以看出所使用的计算机字节序为小端存储。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值