C语言机器字节顺序,C语言小程序:判断你机器上的字节序

本文介绍了计算机科学中的字节序概念,包括大端序和小端序,并提供了一个简单的C程序来检测当前机器使用的字节序类型。

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

我们知道在计算机中数据是以二进制来存储的。最常见的计量存储单位大小的是字节。那么什么是字节序呢?

字节序,又称端序,尾序(英语:Endianness)。在计算机科学领域中,字节序是指存放多字节数据的字节(byte)的顺序,典型的情况是整数在内存中的存放方式和网络传输的传输顺序。Endianness有时候也可以用指位序(bit)。

一般而言,字节序指示了一个UCS-2字符的哪个字节存储在低地址。如果LSByte在MSByte的前面,即LSB为低地址,则该字节序是小端序;反之则是大端序。在网络编程中,字节序是一个必须被考虑的因素,因为不同的处理器体系可能采用不同的字节序。在多平台的代码编程中,字节序可能会导致难以察觉的bug。

由上面的描述我们知道字节序是很重要的,那么怎么检测你机器上使用的是大端序还是小端序呢?

我们先看看大、小端序的详细定义。

大端序:

280px-Big-Endian.svg.png

示例中,最高有效位(MSB, Most Significant Byte)是0x0A 存储在最低的内存地址处。下一个字节0x0B存在后面的地址处。正类似于十六进制字节从左到右的阅读顺序。

小端序:

280px-Little-Endian.svg.png

最低有效位(LSB,Least Significant Byte)是0x0D 存储在最低的内存地址处。后面字节依次存在后面的地址处。

下面我写了一个简单的C程序来判断你机器是使用大端序还是小端序:

帮助

代码定义了一个union变量,里面包含了一个1字节的char变量c,一个2字节的int变量i。整个结构体的大小的2个字节。通过将 0×0201赋值给test的int部分i,然后检查它的低地址即char部分的c(为什么?看看union变量)。如果c中保存的是0×02则代表机器 使用大端序,如果保存的是0×01则代表机器使用小端序。

参考资料:http://zh.wikipedia.org/zh/%E5%AD%97%E8%8A%82%E5%BA%8F#.E5.A4.A7.E7.AB.AF.E5.BA.8F

(全文完)

更多新手学习C语言的博文请关注:http://dabentu.com/1188.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值