Bitmap
博客专区 > banwh 的博客 > 博客详情
Bitmap
banwh 发表于4个月前
Bitmap
  • 发表于 4个月前
  • 阅读 1
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

#include <stdio.h>

#define BITSPERWORD 32  
#define SHIFT 5  
#define MASK 0x1F       // 0x0001 1111 
#define N 10000000  

int a[1 + N/BITSPERWORD];//申请内存的大小  

/*
 * index_loc = n >> SHIFT;  == n / 32
 * bit_loc = n & MASK;   == n % 32
 */

//set 设置所在的bit位为1  
void set(int i) {          
        a[i >> SHIFT] |= (1 << (i & MASK));   
}  

//clr 初始化所有的bit位为0  
void clr(int i) {          
        a[i >> SHIFT] &= ~(1 << (i & MASK));   
}  

//test 测试所在的bit为是否为1  
int test(int i) {   
        return a[i >> SHIFT] & (1 << (i & MASK));   
}  

int main()  
{   
        int i;  
        for (i = 0; i < N; i++)  
                clr(i);    

        // use ctrl+d
        while (scanf("%d", &i) != EOF)  
                set(i);  

        for (i = 0; i < N; i++)  
                if (test(i))  
                        printf("i -- %d\n", i);  
        return 0;  
}  

 

共有 人打赏支持
粉丝 2
博文 36
码字总数 74132
×
banwh
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: