我想计算在一个非常大的位向量(即 100,000 位)中设置的位。
我目前正在做的是使用指向 char 的指针(即 char *cPtr)来指向位数组的开头。我然后:
1. look at each element of the array (i.e. cPtr[x]),
2. convert it to an integer (i.e. (int) cPtr[x])
3. use a 256 element look-up table to see how many bits are set in the given byte (i.e. cPtr[x]).
我突然想到,如果我改用一个短整型指针(即短整型 * sPtr),那么我只需要一半的查找次数,但使用 65534 个元素的查找表,这将有自己的成本内存使用情况。
我想知道每次检查的最佳位数是多少。此外,如果该数字不是某些预设类型的大小,我如何才能遍历我的位向量并将指针设置为超过位数组起始位置的任意位数。
我知道还有其他方法可以计算位数,但现在我想确定我可以在与其他方法进行比较之前优化此方法。