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

lantianhanerqiang 2012-04-11 10:35:32
在C语言中,什么是位数组
...全文
266 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
AnYidan 2012-04-11
  • 打赏
  • 举报
回复
位数组-- 字面意义是每个元素是 bit, 只有 0 和 1
Coder_Y_Jao 2012-04-11
  • 打赏
  • 举报
回复

#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];
}
hen_hao_ji 2012-04-11
  • 打赏
  • 举报
回复
只有 C++ 里面 有 吧, bitset

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧