学习map时看到了一个bit_map数据类型这个类型节约了sizeof(Type)*8倍的储存空间。主要原理就是,一个字节有八位,一个bit位就可以表示一个数。
把bit位置为1可以用*p = (*p)|(0x01<<(n%(sizeof(char)*8)));
检查bit位可以用if(*p&(0x01<<n%8)==0x01<<n%8)
代码如下
#include <iostream>
#define MAX_SIZE 100
using namespace std;
int main()
{
char a[MAX_SIZE];
memset(a,0,sizeof(a));
char *p = a;
int n = 44;
for (int i = 0; i< n/(sizeof(char)*8);i++)
{
p++;
}
*p = (*p)|(0x01<<(n%(sizeof(char)*8)));
if(*p&(0x01<<n%8)==0x01<<n%8)
cout<<"ok"<<endl;
}