Por que essa função conta o número de bits definidos em um número inteiro
Fiz a seguinte pergunta em uma entrevista:
int foofoo(unsigned int u) {
unsigned int foo = u;
do{
u = u/2;
foo -= u;
}while(u > 0);
return foo;
}
Pediram-me para dizer o que essa função faz e fui capaz de descobrir que conta o número de bits definidos em um valor int sem sinal, mas não consegui provar isso, talvez alguém possa?