Один из эффективных способов подсчёта единиц в двоичной записи числа — использование бинарной операции «И». 1
Алгоритм: пока число (его нужно интерпретировать как беззнаковое число, чтобы подсчитать все единицы) не равно нулю, выполнить операцию «n &= n - 1» и увеличить счётчик единиц на единицу. 1
Принцип: например, если в числе есть одна единица (0b00100000), то после вычитания 1 (0b00011111) нужно применить бинарную операцию «И» (0b00100000 & 0b00011111). 1 В результате число станет равным 0 (0b00000000), следовательно, оно содержало только одну единицу, так как операция была проделана только один раз. 1
Также можно использовать алгоритмическое разделение строки: разделить двоичную строку на «1» и подсчитать количество единиц (count = размер вектора, содержащего разбиение, - 1). 2