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