c++ 用数组来储存一个二进制数

如题,想用数组来储存一个二进制数。具体就是一个物体,具有多种状态,可以看作是开关。

img


本来是用bool来存的,但是bool类型是占一个字节的,而二进制数是只占一位,存储效率高。
我用struct{}加一堆bool,如果只用一个数组来存就很方便。
我知道int就能做到存一个二进制数。
但int怎么一位一位存,然后一位一位读呢?
之前是想判断比如

int a
if(a==1)//000001
 //---
if(a==2)//0000010
//---

但这样写起来太麻烦了,有无简单方法呢?

用std::bitset!


别忘了采纳一下,谢谢

bool a; 
a | 00000001 

这样,a的最后一位就被赋值为1,就相当于用一位存储一个状态

a & 0000000

这样,读出来的值就是最后一位的值

或可以定义一个枚举类型,枚举本身就是一个有序整数列。
你可以保存一个二进制,但你无法保存一位二进制。

二进制位有多长,比如64位,那么可以用个long long 存储就可以了
访问具体位的时候可以通过按位与结合移位操作
比如要访问0到31位
long long bits;
bits=....
for(int i=0;i<32;i++)
{
if(bits&(1<<i))
// 第i位为1
else
//第i位为0
///置1
bits|=1<<i;
//置0
bits&=~(1<<i);
}