分享

bitmap实现

 liluvu 2013-04-12
#include <stdio.h>
#define BITS 32
#define MASK 0x1F
#define SHIFT 5
#define N 10000000 //支持N位的bit

int a[1+N/BITS];

void set(int i) {a[i>>SHIFT] |= (1<<(i&MASK));}
void clr(int i) {a[i>>SHIFT] &= ~(1<<(i&MASK));}
int test(int i) {return a[i>>SHIFT] & (1<<(i&MASK));}

void bit_print(int n){
int mask = 1<<(BITS-1);
for (int i = 1; i <= BITS; i++){
putchar((n&mask) == 0?'0':'1');
n <<= 1;
}
}

/////////////////////////

int main()
{
set(5);
set(15);
bit_print(a[0]);
putchar('\n');

clr(15);
bit_print(a[0]);
putchar('\n');

printf("%d, %d", test(5), test(15) );
getchar();
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多