实现位数组
来源:互联网 发布:国际大数据医疗公司 编辑:程序博客网 时间:2024/05/12 22:35
实现位数组的方式很多,下面是<c programming FAQs>中提供的方法:
#include <limits.h>
#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)
例子:
1.声明47位的数组
char bitarray[BITNSLOTS(47)];
2.置第23位
BITSET(bitarray, 23);
3.测试第35位
if(BITTEST(bitarray, 35)) ...
4.利用位数组计算素数
#include <stdio.h>
#include <string.h>
#define MAX 100
int main() {
char bitarray[BITNSLOTS(100)];
int i, j;
memset(bitarray, 0, 100);
for(i = 2; i < MAX; i++) {
if(!BITTEST(bitarray, i)) {
printf("%d/n", i);
for(j = i + i; j < MAX; j += i)
BITSET(bitarray, j);
}
}
return 0;
}
- 实现位数组
- 位数组简单实现
- 位数组实现方法
- 实现位数组
- C++实现位数组
- 【编程珠玑】实现位数组
- 位数组的简单实现
- 用C语言数组实现位操作(位数组)
- 编写一组函数,实现位数组
- C++实现二位数组加减法
- 位数组
- C语言实现动态创建二位数组
- cpu亲和性(affinity)以及位数组内核的实现.
- C__简单的二位数组实现string_list
- 汇编语言实现数组划分,同时也说下传感器单片机脚位
- 如何实现简单的位数组(bit array)
- 用new实现二位数组的几种方法
- 实现字符串循环右移n 位与左移n位(建立数组)
- java实现线程间的协作
- 百变方块V1.0
- stl allocator实现代码
- Ubuntu上stack size的hard limit和soft limit设置问题
- 固定的,高效的内存池实现机器应用
- 实现位数组
- 我的研究方向。。。。。。
- 概率dp
- POJ1833解题报告 后k个排列
- delphi关联excel的方法二则
- 突然探出的脑袋
- PHP注入实例
- poj 1061 青蛙的约会
- emacs 中win键的绑定