我遇到需要长距离计算位图的情况。我不想过多关于问题陈述的细节,因为它并不重要。我宁愿简化问题以便更好地理解。我在python下面有一些伪代码:
n1=12000
while n > 0:
if a == 1:
bitmap_of_n1 = (bitmap_of_n1 << 1)+1 #add a 1 to bitmap
else:
bitmap_of_n1 = bitmap_of_n1 << 1 #add a zero to bitmap
n1 -= 1
n2=12000
while n > 0:
if a == 1:
bitmap_of_n2 = (bitmap_of_n2 << 1)+1 #add a 1 to bitmap
else:
bitmap_of_n2 = bitmap_of_n2 << 1 #add a zero to bitmap
n2 -= 1
#....n100 or so
当然我不是按顺序做的。我利用MapReduce来做这个计算,但我的主要问题是如果我的位图“构建”(使用按位移位)是有效的,还是有更好的方法来做到这一点?我使用最左边的位作为开始,而较新的位是低位。如果我想使用最右边的位作为启动而更新的位是“更大”的位,我怎么能这样做并且它比我上面做的更有效呢?
我需要每个块(n1,n2 ...,n100)的位图长度相同且完全对齐(我的意思是n1的第一位应该与n2的第一位异或,依此类推)。我将在后续步骤中对块进行异或。
非常感谢任何帮助。提前谢谢!