我们有两个位图,例如bitmap1,bitmap2.both都使用malloc(相同的参数)初始化。位图1分配为0010 0110,位图2分配为10000001。我们如何在位图之间进行“或”运算以生成10100111。另一方面,我们要在位2的相应条目中将位图1的位设置为1。

我们不想使用一些方法,例如:

for(i=0;i<n;i++) bitmap1[i] ||= bitmap2[i];


因为这些方法比某些函数(例如memset,memcpy)要慢。
任何指导都是有用的。
编程语言是C / C ++

最佳答案

您可以直接使用按位orxor命令。

or_result = bitmap1 | bitmap2

xor_result = bitmap1 ^ bitmap2

如果由于您如何定义bitmap1和bitmap2(尚不清楚,它是struct还是int还是char还是一些不太有用的东西(如数组)或某些奇怪的东西(如类)而无法使用) (定义了operator[]?我们需要更多信息),那么您可能必须更改存储数据的方式。

09-16 00:46