位图排序的操作方法

来源:互联网 发布:市政工程bim软件 编辑:程序博客网 时间:2024/06/08 06:43

以下代码来自"编程珠玑"一书,故本文归类为"转载",用于展现位图排序的操作函数,假设int占位4个字节


#include <stdio.h>#define BITSPERWORD 32#define SHITF 5#define MASK 0x1F#define N 10000000int a[1 + N/BITSPERWORD];void set(int i){    a[i>>SHITF] |= (1<<(i&MASK));}void clr(int i){    a[i>>SHITF] &= ~(1<<(i&MASK));}int test(int i){    return a[i>>SHITF] & (1<<(i&MASK));}int main(){    int i;    for(i=0;i<N;i++)clr(i);    while(scanf("%d", &i) != EOF)set(i);    for(i=0; i<N; i++)if(test(i))    printf("%d\n", i);    return 0;}