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

新睿云服务器60天免费使用,快来体验!>>>   

#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;  
}  

 

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