C语言 位域中占有字符大小的计算和位域填充的作用
admin
2023-04-22 13:09:53
0

#include

#include

struct EIGHT_BYTE

{

    _Bool opaque :1;

    unsigned int fill_color :3;

    unsigned int :4;

    _Bool show_border :1;

    unsigned int border_color :3;

    unsigned int border_stype :2;

    unsigned int :2;

} eight_byte;

 

int main(void)

{

 

   printf("sizeof eight_byte is : %lu\n", 

   sizeof(eight_byte));

   return 0;

 

}

-----------------------

上面的位域结构体占用的字节是16字节,我好像大概能理解为什么是16字节,但是不太明白的是为什么需要填充"unsigned int :4;“ 和“    unsigned int :2;”。这两个好像是用来是字节对齐,但是没太明白到底是怎么个对齐法?

在结构体中,如果有不同类型的成员变量,那么它们引逐本无宽在内存中的存放位置有可能不是连续的。为了提高读取和写入数据的效率,计算机一360问答般按照某种规则将结构体的成员变量排少庆量克须突云皮宗除思列在一起,而这个规则就是字节对齐。 在字节对齐中,编译器一般按照以下规则进行填充: 第一个成员变量放在最开始的位置; 后续的成员变量按照其类型长度占用的字节数进行对齐,比如 cha分维及积r 类型占用 1 个字节,int 类型占用 4 个字节; 如果结构体中的成员变量长度之和不是 2 的幂次方,则进行字节填充,使得结构体的长度变为 2 的松护幂次方。 根据上述规则,我们可以分析结构体 EIGHT_BYTE 的占用空间为: _Bool opaque :1; 占用 1 个 bit,计右社的体业不需要字节对齐; unsigned int fill_color :3; 占用 3 个 bit,不需要字节对齐; unsi守滑武女又号gned int :4; 占用 4 个 bit,需要字节对齐; _Bool show_border :1; 占用 控圆够秋合晚1 个 bit,不需要字节对齐; u规多委外nsigned int border_color 露圆教多试官粮宜福:3; 占用 3 个 bit,不需要字节对齐; unsigned int border_stype :2; 占势边粒氧功表修理用 2 个 bit,不需要字节对齐; unsigned int :2; 占用 2 个 bit,需要字节对齐。 因为 unsigned 善水划重哥视找int 的长度为 4 个字节,所以每个 unsigned int 类型的成员变量占用的空间为 4 个字节。所以,由于 "unsigned in喜程友台t :4;" 和 "unsigned int :2;" 的长度之和为 4 + 2 = 6,不是 2 的幂次方,需要进行字节填充。 最终,结构体 EIGHT_BYTE 的占用空间为: 1 + 3 + 1 + 3 + 2 + 2 + 4 = 16 字节。 需要注意的是,不同的编译器对字节对齐的处理可能会有所不同。

在求职笔试中,C中的位域是一个常考点,特别是在嵌入式软件中更常见。位域的最大样待好处是可以根据自己需要定制位数,从而节省空间,例如:嵌入式编程稀缺的内存资源。还有在网络通讯中,对头信息部分的结构定义也常用到位域,少传输轴或延一位是一位啊。
这里来分析EMC的一道笔试题(07年招聘试题):
1
typedef struct
bitstruct 2 { 3 int b1:5; 4 int :2; 5 int b2:2; 6 }bitstruct; 7 int main(int argc, char
*argv[]) 8 { 9 bitstruct b; 10
printf("%d\n",sizeof(bitstruct));

相关内容

热门资讯

昆明入选暑期十大热门旅游城市,... 暑期即将结束,8月29日,美团旅行数据显示,今年暑期旅游市场热度持续,各类细分需求场景迸发,深度游、...
三门峡兀家大院:竟藏着千年的往... 大象新闻记者 李书宝 通讯员 杨欣 曹卫娟在三门峡市陕州这片古老的土地上,兀家大院如同一颗璀璨的明珠...
不得了,百名自媒体博主涌入奉贤... 这两天,奉贤有点热闹。随着“网罗精彩 微览贤城——百名博主探营奉贤”活动的启动,来自长三角地区的百余...
西安面积最大的区县,美景众多被... 这是小渔的行旅日记,走走停停,和我一起看西安。西安这个地方,面积最大、海拔最高、距离西安城区最远。这...
跟着赛事去旅行|中国中牟 幻乐... 跟着赛事去旅行|中国中牟 幻乐之城#巴奴杯2025年郑州市篮球联赛#郑州篮不住#郑BA#杉杉奥特莱斯...
贵州贵旅数网获2025年“数据... 本文转自:人民网-贵州频道近日,2025年“数据要素×”大赛贵州分赛决赛获奖名单正式公布。贵州贵旅数...
持续塑造“彝海结盟地·五彩大凉... 封面新闻记者 罗石芊“省委明确提出,凉山等地是全省文旅发展的最大潜在增量,也是最有条件实现全域全业态...
9月15日开幕!2025年凉山... 封面新闻记者 罗石芊8月29日,在凉山文旅融合发展暨首届泸沽湖“转山转海节”新闻发布会上,凉山州摩泸...
四川文旅融合新样本,首届文旅创... 封面新闻记者 易弋力 8月29日,记者获悉,由中共四川省委宣传部指导的首届四川文旅创新博览交易会将于...
这个七夕,来济南天下第一泉风景... 齐鲁晚报·齐鲁壹点 王贝艺 通讯员 牛晓霞 张梦溪七夕节之际,济南天下第一泉风景区推出“泉湖如画·爱...
立体交通赋能、特色产业腾飞、文... 吕梁山西麓的晨雾还未散尽,北武当山的轮廓在微光中若隐若现。方山县,这片1434平方公里的土地,正以“...
文旅新探 |这座太行小城 何以...   晨曦初露,山岚氤氲,山西省晋中市和顺县南天池村裹在湿漉漉的云气里,石头房若隐若现。作为牛郎织女传...
玫莉蔻玫瑰出游季云南行,于山水... 在彩云之南的温柔怀抱里,玫莉蔻的玫瑰出游季悄然绽放,如同一场“筹备已久”的浪漫相遇,让事业与家庭、梦...
山东荣成:邂逅绚丽朝霞 共赏海...   2025年8月27日破晓时分,山东省荣成市成山头风景区迎来一场朝霞。霞光如浪潮般铺洒海面,粼粼波...
魔都“最难约”的博物馆,这份攻... 当魔都的“博物馆热”撞上暑期客流高峰,许多网友在社交媒体上感叹:“现在看个展比抢演唱会门票还难!”在...
湖北恩施:恩施大峡谷雨霁初晴 ... 来源:IC photo近日,恩施大峡谷景区在雨过天晴后展现出壮丽的自然美景。阳光穿透云层,温柔地洒在...
峨眉山救人护士收到景区送的“峨... 封面新闻记者 周家夷8月18日,四川省人民医院胸外科护士涂凤萍在峨眉山金顶游玩时,遇到一位心脏骤停的...
两江夜色美轮美奂 “鸳鸯锅”景... 2025年8月27日傍晚,朝天门长江与嘉陵江交汇处出现泾渭分明的“鸳鸯锅”自然景观,在蓝天白云下十分...
文旅市场多元供给让夏日经济持续... 人民网记者 王绍绍从游览观光到项目体验,从都市风情到自然野趣,从观看演出到赛事经济……近期,旅游新业...
浪漫并不远,爱“心”就在我们身...   七夕节是我国传统节日,每年的这一天,我们会遇到很多温馨浪漫的场景。  其实用心观察就会发现,在我...