Я хочу посчитать биты, которые установлены в чрезвычайно большом битовом векторе (т.е. 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]).
Мне приходит в голову, что если вместо этого я использую короткий int-указатель (т. Е. Short int * sPtr), то мне понадобится только половина поисков, но с элементом 65534справочная таблица, которая будет иметь свою собственную стоимость использования памяти.
Мне интересно, какое оптимальное количество бит нужно проверять каждый раз.Кроме того, если это число не является размером какого-либо предустановленного типа, как я могу пройтись по своему битовому вектору и установить указатель равным ЛЮБОЙ произвольное число битов после начальной позиции массива битов.
Я знаю, что есть другие способы подсчета битов, но сейчас я хочу быть уверен, что смогу оптимизировать этот метод перед сравнением с другими методами.