【C/C++】C语言中一些容易被人忽略的东西 之四 【不常见的位域】
2013-02-06 11:40
465 查看
转载请注明出处
由于阅历有限,篇幅不周之处还望指出,谢谢
大学里的课程很少有讲到位域这么个东西,甚至是位操作符都没有重点讲。
事实上,位操作在算法优化上是可能起到关键性作用的。
&按位与
|按位或
^按位异或
~按位取反
<<左移
>>右移
这些便是六种操作符,那么什么是位域呢?
有时候信息的存储并不需要一个完整的字节,只需要占用几个甚至一个二进制位。为此,诞生了位域这么个东西,用来节省存储空间,简化数据处理。
定义方法:
struct位域结构名 {位域列表};
如:
struct bit { int x:8; //长度为8 int y:2; //长度为2 int z:6 //长度为6 };如上y,z实际上储存在一个字节里,但是一个位域必须储存在一个字节里,不能夸字节,如果z的长度为7,那么z的存储将会新起一个字节。
也可以自定义新起一个字节,使用空域:
int :0;位域可以无位域名,这样的位域用来填充或者调整位置,由于没有名字,无法使用
int :2;
//使用方法 bit.x=1; bit.y=1; bit.z=1;
相关文章推荐
- 【C/C++】C语言中一些容易被人忽略的东西 之五 【预编译中的未知数】
- 【C/C++】C语言中一些容易被人忽略的东西 之二 【typedef 与函数的姻缘】
- 【C/C++】C语言中一些容易被人忽略的东西 之三 【共用体、联合、union】
- 【C/C++】C语言中一些容易被人忽略的东西 之一 【内存的分配与释放】
- 【C/C++】C语言中一些容易被人忽略的东西 之六 【文件读写,y上两点】
- 【C/C++】C++中一些容易被人忽略的东西 之一 【寥寥代码,让您分清引用和指针】
- C语言新手比较容易忽略的东西
- C++ 一些容易忽略的基本点
- C++一些容易忽略的知识点
- 【转】一个非常常见但容易被忽略的c++问题——用IPML模式可以解决
- C++中的一些容易忽略的群体
- C++中容易忽略的一些细节
- C++面向对象基础,以及一些常见面试 改错题。
- c / c++中一些常见区别(功能类似)
- java的一些容易忽略的基础
- C/C++中关于位域的一些总结
- c语言/c++常见面试题
- C语言中容易被忽略的细节(第四篇)
- C++:一些常见知识点的区别(整理)
- C++中容易忽略的知识