You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中位域的字节序问题:结构体实例如何在内存中存储

位域结构体在大端/小端机器中的内存存储分析

首先明确前提:结构体DATA的两个位域a(24位)和b(8位)属于同一个uint32_t类型,总位数恰好填满4字节,因此结构体实例data的内存大小为4字节,无额外填充。代码中data.a = 0x123456、data.b = 0x78,组合后对应完整的32位无符号整数为0x12345678(a占据高24位,b占据低8位)。

大端(BE)机器存储

大端模式遵循高位字节存低地址的规则,内存地址从低到高的字节顺序为:

  • 0x12 → 0x34 → 0x56 → 0x78

小端(LE)机器存储

小端模式遵循低位字节存低地址的规则,内存地址从低到高的字节顺序为:

  • 0x78 → 0x56 → 0x34 → 0x12

补充说明

C标准未强制规定位域的位分配方向(从基础类型高位/低位开始),但主流编译器(如GCC、Clang、MSVC)处理同类型连续位域时,会适配机器的位序。由于本问题中位域总位数刚好填满一个uint32_t,因此最终字节存储顺序与完整32位整数0x12345678的字节序完全一致。

内容的提问来源于stack exchange,提问作者Joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 19:05:11