位应用
来源:互联网 发布:单片机蜂鸣器程序 编辑:程序博客网 时间:2024/05/18 01:39
struct date_struct {
BYTE day : 5, // 1 to 31
month : 4, // 1 to 12
year : 14; // 0 to 9999
}date;
在结构中,日期数据占用最低5位,月份占用4位,年占用14位。这样整个日期数据只需占用23位,即3个字节。忽略第24位。如果用整数来表达各个域,整个结构要占用12个字节。
| 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 |
| | | |
+------------- year --------------+ month+-- day --+
现在分别看看在这个结构声明中发生了什么
首先看一下位域结构使用的数据类型。这里用的是BYTE。1个BYTE有8个位,编译器将分配1个BYTE的内存。如果结构内的数据超过8位,编译器就再分配1个BYTE,直到满足数据要求。如果用WORD或DWORD作结构的数据类型,编译器就分配一个完整的32位内存给结构。
其次看一下域声明。变量(day, month, year)名跟随一个冒号,冒号后是变量占用的位数。位域之间用逗号分隔,用分号结束。
使用了位域结构,就可以方便地象处理普通结构数据那样处理成员数据。尽管我们无法得到位域的地址,却可以使用结构地址。例如:
date.day = 12;
dateptr = &date;
dateptr->year = 1852;
BYTE day : 5, // 1 to 31
month : 4, // 1 to 12
year : 14; // 0 to 9999
}date;
在结构中,日期数据占用最低5位,月份占用4位,年占用14位。这样整个日期数据只需占用23位,即3个字节。忽略第24位。如果用整数来表达各个域,整个结构要占用12个字节。
| 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 |
| | | |
+------------- year --------------+ month+-- day --+
现在分别看看在这个结构声明中发生了什么
首先看一下位域结构使用的数据类型。这里用的是BYTE。1个BYTE有8个位,编译器将分配1个BYTE的内存。如果结构内的数据超过8位,编译器就再分配1个BYTE,直到满足数据要求。如果用WORD或DWORD作结构的数据类型,编译器就分配一个完整的32位内存给结构。
其次看一下域声明。变量(day, month, year)名跟随一个冒号,冒号后是变量占用的位数。位域之间用逗号分隔,用分号结束。
使用了位域结构,就可以方便地象处理普通结构数据那样处理成员数据。尽管我们无法得到位域的地址,却可以使用结构地址。例如:
date.day = 12;
dateptr = &date;
dateptr->year = 1852;
- 位应用
- 位运算的应用
- 位运算应用
- 位运算应用2
- 位运算的应用
- 位运算应用技巧
- 位运算应用技巧
- 位运算的应用
- 位运算应用
- 位运算应用口诀
- 位运算及应用
- 位运算应用技巧
- 位运算应用
- 位运算的应用
- java位运算应用
- 位运算及其应用
- 位运算的应用
- 位运算应用
- c++ static
- 在AndroidManifest.xml中<uses-sdk /> 内属性意思
- 判断是否是平衡二叉树
- 报错:Conversion to Dalvik format failed: Unable to execute dex:
- 清除Oracle中无用索引 改善DML性能
- 位应用
- 进程线程 关系
- Xcode中使用SVN需要注意的问题
- java 判断字符串是否相等
- 检索 COM 类工厂中 CLSID 为 {} 的组件时失败,原因是出现以下错误: 80070005
- 软件工程 .
- int i=010 与int i=10 区别:
- 在Ubuntu上为Git安装diff工具Meld
- MAX Reactor 之 车轮约束(CarWhell)