在C语言中,什么是位数组解决方案
在C语言中,什么是位数组
在C语言中,什么是位数组
------解决方案--------------------
只有 C++ 里面 有 吧, bitset
------解决方案--------------------
在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