Если переменная представляет собой целое число, вы можете рассчитывать биты с помощью
public static int BitCount(int x)
{ return ((x == 0) ? 0 : ((x < 0) ? 1 : 0) + BitCount(x <<= 1)); }
Объяснение: Рекурсивный, если число равно нулю, биты не установлены, и функция возвращает ноль еще, он проверяет знаковый бит, и если набор содержит 1, то сохраняет 0, , затем сдвигает весь номер один бит влево , устраняя только что проверенный бит знака, и ставит нуль в самый правый бит, и снова вызывает себя с новым значением сдвига влево.
Общий результат состоит в том, чтобы исследовать каждый бит с самого левого на правый, и для каждого из них хранится в стеке, был ли установлен этот бит (как 1/0), left-Shits следующий бит в позицию бита значка и resurses. Когда он, наконец, дойдет до последнего установленного бита, значение будет равно нулю, и рекурсия остановится. Затем функция возвращает стек вызовов, добавляя все значения темпа, которые он хранил на пути вниз. Возврат всего
Найдено дубликатов: http: // stackoverflow.com/questions/109023/best-algorithm-to-count-the-number-of-set-bits-in-a-32-bit-integer – McPherrinM
Какой метод вы используете? Если вы разместили код, который используете в настоящее время, мы можем оказать вам дополнительную помощь. – jkndrkn