一个用作标志的普通变量至少要用一个字节—8 位, 而在某些计算机系统中则可能是 16 位。 如果我们想在一个很大的表中存储很多标志, 那么 “被浪费” 的内存空间是很可观的。在 C 语言中, 一种方法是用叫做位段的构造类型来定义一个压缩信息的结构。
我们通常想保持某个状态的Flag,就可以只用一个变量的某一个bit位来保存,这样可以节省空间!
先举个例子
通过位操作的方式将第四位置0:10转换成二进制就是0000 1010。
(1<<(index-1))就是先将1左移三位,就是0000 1000。
然后按位取反~(1<<(index-1)),就是1111 0111.
value(也就是10)与其按位与运算,0000 1010&1111 0111,这样就得到了0000 0010,这样就只将第四位清零,而不影响其他位!
//---将10的第四位置零,通过位操作
int value=10;
int index=4;
value&=~(1<<(index-1));
利用bit位的方法,设置各种状态的Flag,以设置工厂模式为例
(1).比如判断是否为工厂模式,我们先定义一个WORD(unsigned int类型,即占两个字节)字节的Flag—MonitorFlag,这个Flag是一个结构体成员变量。然后定义一个宏来标示这个结构体成员变量:#define MonitorFlags MonitorSetting.MonitorFlag
typedef struct
{
BYTE Ident;
WORD MonitorFlag; // 0