/ / Como executar a operação de bits em uma matriz de caracteres multidimensional em c - c, multidimensional - array, bitwise - operadores

Como executar a operação de bits em uma matriz de caracteres multidimensionais em c - c, multidimensional - array, bitwise - operadores

Eu tenho o seguinte array de caracteres multidimensional. Eu preciso primeiro XOR um dos arrays com o array de máscaras e depois AND o resultado com o outro array. Qual é o caminho mais rápido para implementá-lo?

Nota: os arrays de caracteres podem ter até 20 KB de tamanho.

unsigned char test1[2][2] = { { "a","b" },{ 0 } };
unsigned char test2[2][2] = { { 0 },{ "O","S" } };
unsigned char mask[2][2] = { 0 };

Respostas:

0 para resposta № 1

algo assim pode ser rápido:

int cnt = sizeof(mask)/sizeof(unsigned char)

while(cnt>0)
{
*((unsigned char*)test1+cnt) ^= *((unsigned char*)mask+cnt);
*((unsigned char*)test1+cnt) &= *((unsigned char*)test2+cnt);
cnt--;
}

Há apenas uma vez o caminho através das matrizese você move apenas 3 ponteiros que podem ser bem otimizados pelo compilador. Para ser MAIS eficiente, devemos fazer alguns testes e ver a saída da montagem. TI também depende da arquitetura que você usa (X86, ARM, AVR, PIC, ...)