逻辑运算实现位向量

来源:互联网 发布:python 时间戳转毫秒 编辑:程序博客网 时间:2024/05/16 12:38

1.位向量的含义

位向量指的是由一些二进制位组成的向量,包含位向量的设置,清零以及探测功能,例如:如果有1,2,4,5这几个数组,则需要二进制数110110表示。现在需要用32位的int型数据的每一位表示一个数据,因为正常情况下数据范围大于32,所以需要int数组来表示,即a[0]表示0-31,a[1]表示32-63,以此类推。

2.代码实现

#define N 10000000        //表示数据的最大值#define BITPERWORD 32     //表示int所占的字节数#define SHIFT 5           //表示2^5=32位的int#define MASK 0x1f         //5位的掩码,表示二进制数11111int array[1 + N / BITPERWORD];       //存储最大值为N所需要位向量的数组,初始值均为0//设置位向量void set(int i){array[i >> SHIFT] |= (1 << (i&MASK));     //i >> SHIFT表示它存放在数组的哪一个元素下面,i&MASK表示i%32}//清楚数组第i位为0void clear(int i){array[i >> SHIFT] &= ~(1 << (i&MASK));}//返回array的第i位int test(int i){return array[i >> SHIFT] & (1 << (i & MASK));}


1 0
原创粉丝点击