Несколько открытых вопросов: -
мы можем модифицировать алгоритм для поддержки отрицательного числа следующим образом: -
count = 0
while n != 0
if ((n % 2) == 1 || (n % 2) == -1
count += 1
n /= 2
return count
теперь, чтобы преодолеть вторую проблему, мы можем написать algo как: -
int bit_count(int num)
{
int count=0;
while(num)
{
num=(num)&(num-1);
count++;
}
return count;
}
для полной справки см.:
http://goursaha.freeoda.com/Miscellaneous/IntegerBitCount.html