求教关于位运算的一道题目答案的解释
题目:如何使用位逻辑运算(例如与,或,移位)来实现位向量set操作(令位向量数组第N位为1)?
答案:
#define BITSPERWORD 32
#define SHIFT 5
#define MASK 0x1F
#define N 100000
int a[1+N/BITSPERWORD]
void set(int i) {
a[i>>SHIFT] |= (1<<(i & MASK));
}
void set(int i) {
a[i>>SHIFT]
[解决办法]
= (1<<(i & MASK));
}
void set(int i) {
a[i/32]
[解决办法]
= (1<<(i%32));
}