C语言的位域
2016-01-26 11:11
253 查看
C语言中对数据的每一个位进行管理,可以是用位域+结构体+联合体,如下:
union dbit { struct bit//结构体的最大宽度1个位,对齐时1字节对内存对齐 { bool b0:1;//对应value的最低位 bool b1:1; bool b2:1; bool b3:1; bool b4:1; bool b5:1; bool b6:1; bool b7:1; }; byte value; }; int main(int argc, char* argv[]) { dbit c; c.b0 = -1;//取值的最低位 c.b1 = 1; c.b2 = 1; c.b3 = 0; c.b4 = 1; c.b5 = 1; c.b6 = 1; c.b7 = 0; printf("%d", c.value ); getchar(); return 0; }可以想到的一个应用是用来管理各种开关状态。用普通数组也能完成。用位域的话,以紧凑的方式分配内存,能节省一些空间。还有一个好处是,当宽度为1时,赋值时只有0和1两种值。
相关文章推荐
- c++野指针 之 实战篇
- 重学C++ (十) OOP面向对象编程(1)
- C++ 智能指针
- C语言中的文件
- C++ 获取 IE 版本
- Codeforces Round #338 (Div. 2):(615A)
- Effective C++(条款48-50)
- c语言中用static修饰的函数与普通函数的区别
- Codeforces Round #339 (Div. 2):( codeforces 614A codeforces 614B )
- Boost 学习之算法篇 one_of 与 one_of_equal
- C++集合操作,使用STL的set容器
- C语言进制转换
- C++32 调用 C# 64编写的dll
- c++中vector的用法详解
- C++ template —— trait与policy类(七)
- Boost 学习之算法篇 none_of 与 none_of_equal
- 【c语言】调整数组使奇数所有都位于偶数前面
- Google C++编程规范 – 第二十一条 -《-inl.h文件》
- C++遍历文件夹,使用boost filesystem递归遍历文件夹
- Boost 学习之算法篇 any_of 与 any_of_equal