在C语言中,什么是位数组解决方案

在C语言中,什么是位数组
在C语言中,什么是位数组

------解决方案--------------------
只有 C++ 里面 有 吧, bitset
------解决方案--------------------
C/C++ code

#include <limits.h>       /* for CHAR_BIT */  
#define BITMASK  (b)    (1 << ((b) % CHAR_BIT))  
#define BITSLOT  (b)    ((b) / CHAR_BIT)  
#define BITSET   (a, b) ((a)[BITSLOT(b)] |= BITMASK(b))  
#define BITCLEAR (a, b) ((a)[BITSLOT(b)] &= ~BITMASK(b))  
#define BITTEST  (a, b) ((a)[BITSLOT(b)] & BITMASK(b))  
#define BITNSLOTS(nb)   ((nb + CHAR_BIT - 1) / CHAR_BIT)  
  
//#define XOR(a,b) (!!(a) ^ !!(b))  
#define XOR(a,b)        (!!(a)!=!!(b))  
// 声明一个47位的"数组"  
char bitarray[BITNSLOTS(47)];  
// 置第23位  
BITSET(bitarray, 23);  
// 测试第35位  
if(BITTEST(bitarray, 35)) ...  
// 计算两个位数组的并,再将结果放入另一个数组  
for(i = 0; i < BITNSLOTS(47); i++) {  
    array3[i] = array1[i] | array2[i];  
}

------解决方案--------------------
位数组-- 字面意义是每个元素是 bit, 只有 0 和 1