位段的深度剖析和存储方法,位段理解方法

简介: 位段的深度剖析和存储方法,位段理解方法
//位段----结构体实现位段的能力:
//位段和结构体类似,但是两个不同:
//1.位段的成员必须是int,unsigned int或signed int
//2.位段的成员后面有一个冒号和一个数字
//struct A      结构体                   struct A        位段
//{                                     {
//    int_a;                                 int _a:2;
//    int_b;                                 int _b:5;
//    int_c;                                 int _c:10;
//    int_d:                                 int _d:30;
//};                                    };
//上面的位段    -----一定程度上节省空间     ----4字节最大32bit,不能放置32以上的
//struct A
//{  //int型开辟4个字节---32bit
//    int _a : 2;//32-2=30
//    int _b : 5;//30-5=25
//    int _c : 10;//25-10=15
//    int _d : 30;//15不够,重新开辟4个字节,放置30bit,但是这30不要求掌握是15的还是32的
//};
//int main()
//{
//    printf("%d\n", sizeof(struct A));//8----8字节
//    return 0;
//}
//在vs里怎么存储的呢
//struct S
//{
//    char a : 3;
//    char b : 4;//a占3bit,b占4bit,放在1个字节中
//    char c : 5;//c占5bit,d占4bit,不能放一个字节中,分开放
//    char d : 4;//所以类似为3个字节,分别为00000000  00000000  00000000
//};
//struct S
//{
//    struct S s = { 0 };
//     s.a = 10;//把a的3个bit放10->1010(二进制),但是只能放3个010
//    s.b = 12;//把b的4个bit放12->1100(二进制),放1100
//    s.c =3;//把c的5个bit放3->00011(二进制),放00011
//    s.d =4;//把d的4个bit放4->0100(二进制),放0100
//    return 0;
//};//在vs编译器内,内存先使用低比特的数据,在使用高比特位,ab按顺序从右向左使用,(先放右在放左)

使用后变为0(空置放0)1100(b) 010(a)         000 00011(c)     0000 0100(d)

即内存中为01100010  00000011  00000100(16进制)

即         6     2   0    3     0   4

//int main()
//{
//    
//    return 0;
//}
相关文章
|
8月前
|
机器学习/深度学习 人工智能 自然语言处理
深度探索DeepSeek-R1:人工智能的新篇章
深度探索DeepSeek-R1:人工智能的新篇章
|
9月前
|
人工智能 Devops 数据挖掘
IT项目经理的职责、能力和工具:让项目管理更高效
3分钟了解IT项目经理的主要职责和需要具备哪些专业技能。
336 5
IT项目经理的职责、能力和工具:让项目管理更高效
|
JSON 小程序 JavaScript
微信小程序-vant-weapp日历组件的使用(年月日)
微信小程序-vant-weapp日历组件的使用(年月日)
506 0
|
数据安全/隐私保护 C语言
【C语言】getchar和putchar函数详解:字符输入输出的利器
【C语言】getchar和putchar函数详解:字符输入输出的利器
1324 0
|
机器学习/深度学习 数据采集 算法
【MATLAB第4期】源码分享#基于贝叶斯Bayes算法优化LSTM长短期记忆网络的时间序列预测模型,含源代码+中文注释,保姆级教学
【MATLAB第4期】源码分享#基于贝叶斯Bayes算法优化LSTM长短期记忆网络的时间序列预测模型,含源代码+中文注释,保姆级教学
|
C语言
C语言之宏详解(超级详细!)
C语言之宏详解(超级详细!)
|
NoSQL Redis Sentinel
SpringBoot使用分布式锁
SpringBoot使用分布式锁
2814 0
SpringBoot使用分布式锁
|
人工智能 运维 安全
阿里认证和腾讯认证有什么区别?哪个比较好?
云计算诞生后,就如雨后春笋般占据了我们的社会的各行各业,很多业内的龙头企业,都会使用云计算来作为自己的技术支持,尤其是很多中小型企业,会选择使用云产品,降低自己的运营成本。
百查体育数据
百查数据是一家知名的数据服务提供商,专注于为体育媒体提供实时、精准、稳定的体育数据API接口。我们的数据服务涵盖了众多体育赛事,包括足球、篮球、电竞、网球、排球、棒球、板球、橄榄球、冰球等,以及奥运会和世界杯等大型体育赛事。其中,足球数据服务是我们的重要业务之一,数据内容全面,包含基础数据、实时数据、统计数据、指数数据、资料库数据等多个模块。我们的目标是通过专业的数据服务,助力体育行业实现更大发展,并为体育媒体提供更多价值。
|
开发框架 安全 JavaScript
网络安全-文件上传漏洞的原理、攻击与防御
网络安全-文件上传漏洞的原理、攻击与防御
831 0
网络安全-文件上传漏洞的原理、攻击与防御