关于位域的学习
来源:互联网 发布:上海java培训 编辑:程序博客网 时间:2024/05/16 23:35
以前从来没听说过”位域”这概念,今天在这学到了。
位域是C语言为了节省空间和使用方便而提供的一种新的数据结构,比如在生活中有很多只需要一位就可以表示不同状态的,操作系统中的位示图,就是用1和0表示空闲块和已分配的块。说白了就是一个字节可以分为多个域或段。
位域的定义和结构体相似:
struct 位域结构名{位域列表}
位域列表主要形式为 {类型说明符 位域名:位域长度 }
C99规定int、unsigned int和bool可以作为位域类型,但编译器几乎都对此作了扩展,允许其它类型类型的存在。使用位域的主要目的是压缩存储,其大致规则为:
1) 如果相邻位域字段的类型相同,且其位宽之和小于类型的sizeof大小,则后面的字段将紧邻前一个字段存储,直到不能容纳为止;
2) 如果相邻位域字段的类型相同,但其位宽之和大于类型的sizeof大小,则后面的字段将从新的存储单元开始,其偏移量为其类型大小的整数倍;
3) 如果相邻的位域字段的类型不同,则各编译器的具体实现有差异,VC6采取不压缩方式,Dev-C++采取压缩方式;
4) 如果位域字段之间穿插着非位域字段,则不进行压缩;
5) 整个结构体的总大小为最宽基本类型成员大小的整数倍。
如:main()
{struct foo4
{char a : 2;char b : 3; int c : 1; };
printf("%d",sizeof(struct foo4));
}
由规则2知道,在VC6.0编译环境下,为位域a,b分配了一个字节,为位域c分配4个字节,又由5规则,所以运行结果为8
- 关于位域的学习
- C语言学习1:关于结构体的位域
- 关于JAVA中位运算的学习
- 关于位操作学习的一些记录
- 关于位域的知识
- 关于位域的理解
- 关于位域的理解
- ARM学习随笔(2)关于位域的一些事
- 关于C/C++的位域
- 关于位域的一点总结
- C++中关于位域的概念
- C++中关于位域的概念
- C++中关于位域的概念
- 关于位域的一些东西
- 关于位的算法
- 关于位域
- 关于位域
- 关于位域
- C#关键字之修饰符
- 提问
- 如何做一个满足市场和客户要求的产品?
- 面试题集
- Web文件上传进度控制 dhtmlxVault v1.3 发布
- 关于位域的学习
- 芳香之旅
- [转]VC 中与字符串相关的宏 _T、TEXT,_TEXT、L 的作用
- 很遗憾,你们的问题我无法回答--Leo谈应届生求职(10)结局篇
- 参加第一篇笔记可得5个积分!
- 长度N的线性表顺序查找最坏的比较次数-N
- 初学c++
- 随机数函数
- 表A,有id,name,regdate.