计算机中的大小端问题

本文探讨了计算机在处理数据时的大小端问题,主要关注C语言环境下的32位机。介绍了大小端模式的定义,即数据在内存中的存储顺序与实际高位低位的差异。通过一个short类型的例子,解释了大端模式和小端模式的区别,并提出了利用联合体来判断系统大小端的方法。

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

所谓的大小端问题指的是计算机加载数据是内存实际存储顺序和数据本身的“高/低位”顺序是否一致的问题;当数据长度大于1时才有大小端的讨论意义;
在这里插入图片描述
在C语言(32位机)中short占2个字节,那么当我们定义一个short型(0x1234)的变量时就会向图1中的字节1和字节2写入两个字节;这时就有两种可能的情况:
1)字节1存储“0x12”,字节2存储“0x34”;【大端模式
2)字节1存储“0x34”,字节2存储“0x12”;【小端模式
如下图:
在这里插入图片描述

那么如何判断呢?这里我们很自然地就想到如果我们读到低地址的数据看他返回的是“0x12”还是“0x34”就可以得出相应的结论;
如下图:
在这里插入图片描述
那么此时我们就要用到一种特殊的数据结构——联合体【因为ch和sh占有相同的起始地址】;
代码如下:

#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

存墨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值