[英]Fast AND operation on bit arrays
What can be a faster algorithm for doing bitwise AND operation on large bit-arrays?在大型位数组上进行按位与运算的更快算法是什么? I have implemented bit-array in C++ using a char array.我已经使用 char 数组在 C++ 中实现了位数组。 For now, I am iterating over each byte and performing AND operation.现在,我正在迭代每个字节并执行 AND 运算。
void ANDoperation(char* A, char* B){
for (int i=0; i<(array_size/8 +1); i++ ){
A[i] &= B[i];
}
}
For K arrays, I am executing this function iteratively K-1 times.对于 K 个数组,我迭代执行此函数 K-1 次。
If you would like to go for a more C++-ish way, I would suggest you using std::bitset
in a following manner:如果您想采用更多 C++ 风格的方式,我建议您按以下方式使用std::bitset
:
#include <iostream>
#include <bitset>
int main() {
std::bitset<3> v1(0b110);
std::bitset<3> v2(0b011);
v1 &= v2;
std::cout << v1.to_string() << std::endl; // 010
return 0;
}
or as @AndrewBainbridge suggested:或正如@AndrewBainbridge建议的那样:
void and_operation(std::bitset<3000>& v1, std::bitset<3000> const& v2) {
v1 &= v2;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.