我有以下多维字符数组。我需要首先将其中一个数组与掩码数组进行“异或”,然后将结果与另一个数组进行“与”操作。最快的实现方法是什么?
注意:字符数组的大小可达 20 KB。
unsigned char test1[2][2] = { { 'a','b' },{ 0 } };
unsigned char test2[2][2] = { { 0 },{ 'O','S' } };
unsigned char mask[2][2] = { 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...)
关于c - 如何在c中对多维char数组进行位运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46092439/