我遇到了一个问题,可能可以通过重新排列我的算法来解决,但这很有趣,也许你们中的某个人有一个好主意。
情况如下:我有两个无符号长整数列表,两个列表的大小相同,如果这有帮助,您可以假设这个大小是2的幂。这些列表的大小通常在几百范围内。现在,我想计算一个整数,该整数在第一个列表比第二个列表有更多的设置位的每个位置上都有一个设置位。
速度就是一切。
情况如下:我有两个无符号长整数列表,两个列表的大小相同,如果这有帮助,您可以假设这个大小是2的幂。这些列表的大小通常在几百范围内。现在,我想计算一个整数,该整数在第一个列表比第二个列表有更多的设置位的每个位置上都有一个设置位。
速度就是一切。
Simplified example:
list1 list2
1010 0101
1111 0000
1100 0011
1010 0101
result: 1010
because of 4>0, 2<=2, 3>1, 1<=3
编辑:数据的替代安排会导致位向量中包含现在某个位置的位于多个向量中。在这种情况下,我可以使用比特计数算法,然后进行比较,这将在两个列表的每64位中少于30次操作。基本上,我有一个位矩阵,可以使用列或行的位向量。
额外结构:John Willemse的评论让我意识到我可以计算第三个列表,这样这三个列表就会按位互补。尽管我不知道这有何帮助。