C语言中的位段(转)
来源:互联网 发布:各种软件logo图标 编辑:程序博客网 时间:2024/04/30 02:29
位段的相关知识
位段是 C 语言特有的数据结构, 它允许我们定义一个由位组成的段, 并可为它赋以一个名字。
定义五个变量,实际上标志 f1, f2, f3 分别只需要 1 位。变量 type 只需要 4 位, 而变量 index 只需要 9 位。 总共是 16位 ---- 2 个字节。我们用两个字节就够了。
我们可这样来做:
structpacked_struct
{
unsigned int f1 :1;
unsigned int f2 :1;
unsigned int f3 :1;
unsigned int type :4;
unsigned int index :9;
};
该例中, 我们定义了一个结构 packed_struct。该结构定义了五个成员。第一个成员叫做 f1, 是 unsigned int 类型的。紧跟在该成员名之后的 :1 规定了它以 1 位存放。类似地, 标志 f2 和 f3 被定义为长度只有 1 位的。定义成员 type 占有 4 位。定义成员 index 占有 9 位。C 编译器自动地把上面的位段定义压缩在一起。位段的划分如图所示。packed_struct 总共使用了 16 位。
我们已经定义了一个称作为packed_struct 的包含着位段的结构。现在, 我们象下面那样定义一个称作为 packet_data 的变量: struct packed_struct packed_data; 于是, 我们就可以用简单的语句, 把 packed_data 的 type 位段设置为 7:
packed_data.type = 7; 类似地, 我们可以用下面的语句把这个位段的值设为 n:
packed_data.type= n; 我们不必担心 n 的值太长, 以致不能放入 type 位段中, C编译器会自动地仅取出 n 的低四位, 把它赋值给packed_data.type。取出位段的值也自动地处理的, 因此语句 n = packed_data.type; 将从packed_data 中取出 type 位段, 并把它的值赋给 n。- C语言中的位段(转)
- C语言中的位段
- 浅谈C语言中的位段
- 浅谈C语言中的位段
- 浅谈C语言中的位段
- 浅谈C语言中的位段
- 浅谈C语言中的位段
- 浅谈C语言中的位段
- 浅谈C语言中的位段
- 浅谈c语言中的位段
- 浅谈C语言中的位段
- 位段【C语言】
- 位段 C语言
- C语言位段
- C 语言 位段
- C语言位段
- c语言位段
- 聊聊C语言中的位段(位域)
- Android 的界面构成
- C++ 及 STL相关链接
- Oracle9i,c,c++,oci,occi,ORA-12154错误原因
- 转,windows编程中关于文件的操作
- 转,windows编程中关于文件的操作
- C语言中的位段(转)
- Android RIL 模块架构
- 6.策略模式
- 7.桥接模式
- 8.代理模式
- 9.观察者模式
- 网站提示信息的含义 200 500 101 205
- 10.装饰模式
- 主流Java报表软件之王者争夺战:功能大PK系列之多图例设置