Быстрая операция И на битовых массивах - PullRequest
0 голосов
/ 19 февраля 2020

Что может быть более быстрым алгоритмом для выполнения побитовой операции И на больших битовых массивах? Я реализовал битовый массив в C ++, используя массив символов. Сейчас я перебираю каждый байт и выполняю операцию AND.

void ANDoperation(char* A, char* B){
  for (int i=0; i<(array_size/8 +1); i++ ){
    A[i] &= B[i];
  }
}

Для массивов K я выполняю эту функцию итеративно K-1 раз.

1 Ответ

1 голос
/ 19 февраля 2020

Если вы хотите go для более C ++ - i sh способа, я бы предложил вам использовать 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;
}

Демо

или как @ AndrewBainbridge предложил:

void and_operation(std::bitset<3000>& v1, std::bitset<3000> const& v2) {
    v1 &= v2;
}
...