Функция подсчёта количества двоичных едениц в переменной - задача скорее для проверки сообразительности и.
Я знаю очень красивый алгоритм:
int function (unsigned value)
{
int count;
for (count = 0; value; count++) value &= (value - 1);
return count;
}
А вот ещё более быстрый:
char lookupTable[] = { 0, 1, 1, 2, 1, 2, ... } //0-255 binary digit count
inline char getDigitCount(unsigned char v)
{
return lookupTable[v];
}