Несколько алгоритмов для быстрого вычисления количества единиц в больших числах:
- Алгоритм Брайана Кернигана. 2 Пока число (его нужно интерпретировать как беззнаковое, чтобы подсчитать все единицы) не равно нулю, выполнить операцию
n &= n - 1
и увеличить счётчик единиц на единицу. 1 - Алгоритм для 64-битного слова. 1 Собирает сумму по методу двоичного слияния. 1 При сложении чётных и нечётных битов использовано тождество: g+l = (2g+l)-l. 1 При слиянии побайтовых сумм значимы только 7 младших разрядов, и верхние разряды обрезаются один раз. 1
Также для работы с большими числами можно использовать длинную арифметику, для которой в современных языках программирования есть готовые оптимизированные библиотеки. 34