如何在c中对多维char数组执行位操作

时间:2017-09-07 09:13:32

标签: c multidimensional-array bitwise-operators

我有以下多维char数组。我需要首先XOR使用掩码数组的一个数组,然后AND结果与另一个数组。实现它的最快方法是什么?

注意:char数组的大小可以达到20 KB。

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

1 个答案:

答案 0 :(得分:0)

这样的事情可能很快:

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--;
}

只有一次通过数组的方式,你只能移动3个指针,编译器可以很好地优化它们。为了最有效率,我们必须进行一些测试并查看装配输出。 IT还取决于您使用的架构(X86,ARM,AVR,PIC,......)