含位域的结构体
来源:互联网 发布:sklearn iris数据集 编辑:程序博客网 时间:2024/06/14 14:25
http://blog.chinaunix.net/uid-20726927-id-2455478.html
使用位域的主要目的是压缩存储,其大致规则为:
1) 如果相邻位域字段的类型相同,且其位宽之和小于类型的sizeof大小,则后面的字段将紧邻前一个字段存储,直到不能容纳为止;
2) 如果相邻位域字段的类型相同,但其位宽之和大于类型的sizeof大小,则后面的字段将从新的存储单元开始,其偏移量为其类型大小的整数倍;
3) 如果相邻的位域字段的类型不同,则各编译器的具体实现有差异,VC6采取不压缩方式,Dev-C++采取压缩方式;
4) 如果位域字段之间穿插着非位域字段,则不进行压缩;
5) 整个结构体的总大小为最宽基本类型成员大小的整数倍。
结构体中的位域
1. 一个位域必须存储在同一个字节中,不能跨两个字节。如一个字节所剩空间不够存放另一位域时,应从下一单元起存放该位域。也可以有意使某位域从下一单元开始。例如:
struct bs
{
unsigned a:4
unsigned :0 /*空域*/
unsigned b:4 /*从下一单元开始存放*/
unsigned c:4
}
在这个位域定义中,a占第一字节的4位,后4位填0表示不使用,b从第二字节开始,占用4位,c占用4位。
2. 由于位域不允许跨两个字节,因此位域的长度不能大于一个字节的长度,也就是说不能超过8位二进位。
3. 位域可以无位域名,这时它只用来作填充或调整位置。无名的位域是不能使用的。例如:
- 含位域的结构体
- 结构体(含位域)的sizeof
- 结构体(含位域)的sizeof
- 含位域结构体的sizeof
- 含位域结构体的sizeof
- 含位域结构体的sizeof
- 含位域结构体的sizeof
- 结构体(含位域)的sizeof
- 结构体(含位域)的sizeof
- 含位域结构体的sizeof
- 结构体(含位域)的sizeof 对齐相关
- 结构体调用结构体的函数
- 结构体里的结构体。赋值
- 访问结构体结构成员的示例
- 结构体的sizeof
- 结构体的sizeof
- 结构体的初始化
- 结构体的sizeof
- 常用的sql语句
- Maximum Depth of Binary Tree
- Tomcat
- Django1.4之CSRF错误以及解决方法 20
- Django模板系统(非常详细)
- 含位域的结构体
- linux上Java程序java.lang.NoClassDefFoundError
- sqlserver条件判断语句
- Java异常处理
- Opencv学习(2)--数据结构
- 学习iTextSharp 页面设置总结
- 在ubuntu系统下cocos2dx移植到android平台
- 编译器错误消息: CS0016: 未能写入输出文
- 指向函数的指针