鱼C论坛

 找回密码
 立即注册
查看: 4003|回复: 9

[知识点备忘] S1E53:位域

[复制链接]
发表于 2017-7-2 17:47:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
待更新
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-10-9 20:28:23 | 显示全部楼层
视频中讲解的时候,说明了位域的宽度不能超过它所依附的数据类型的长度,但是在讲解无名位域时举的例子却让一个unsigned int型位域有最大424的宽度,是我理解有误还是示例不恰当呢?
位域.JPG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-17 14:14:27 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-17 14:46:06 | 显示全部楼层
位域,也叫位段,位字段
无名位域主要用于调整位域成员之间的位置
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-8 20:48:33 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-25 11:09:07 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-9-4 14:55:05 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-3-2 21:24:01 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 7 天前 | 显示全部楼层
@FishC 请总结“S1E53:位域”的知识点备忘。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
检测点11.1 发表于 2024-04-28 15:19
@FishC 请总结“S1E53:位域”的知识点备忘。


位域是一种用于优化内存使用的技术,可以让我们在定义结构体中的成员时,指定使用几个二进制位来存储该成员的值。这样做可以节省内存空间,特别适用于需要大量存储开关状态等信息的情况。

使用位域需要注意以下几点:

1. 定义位域变量时要使用无符号类型(unsigned),以避免负数的问题。

2. 定义位域成员时,需要指定使用多少个二进制位来存储值。例如,`unsigned int flag : 4;` 表示flag成员使用4个二进制位来表示。

3. 多个位域成员可以在同一行进行定义,它们之间会按顺序依次分配二进制位。

4. 位域成员可以和普通成员混合使用,但需要注意数据对齐问题。

下面是一个例子,演示了如何使用位域:

  1. #include <stdio.h>

  2. struct Flag {
  3.     unsigned int a : 1;
  4.     unsigned int b : 2;
  5.     unsigned int c : 3;
  6.     unsigned int d : 4;
  7. };

  8. int main() {
  9.     struct Flag flag;

  10.     flag.a = 1;  // 使用1个二进制位存储
  11.     flag.b = 2;  // 使用2个二进制位存储
  12.     flag.c = 7;  // 使用3个二进制位存储
  13.     flag.d = 9;  // 使用4个二进制位存储

  14.     printf("%d %d %d %d\n", flag.a, flag.b, flag.c, flag.d);

  15.     return 0;
  16. }
复制代码


输出结果为:
  1. 1 2 7 9
复制代码


这个例子中,结构体`Flag`定义了四个位域成员。其中,`a`使用一个二进制位存储,`b`使用两个二进制位存储,`c`使用三个二进制位存储,`d`使用四个二进制位存储。通过给位域成员赋值,我们可以看到它们的存储结果。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-5 00:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表