¿Por qué esta función cuenta el número de bits establecidos en un entero?
Me hicieron la siguiente pregunta en una entrevista:
int foofoo(unsigned int u) {
unsigned int foo = u;
do{
u = u/2;
foo -= u;
}while(u > 0);
return foo;
}
Me pidieron que dijera qué hace esta función y pude encontrar que cuenta el número de bits establecidos en un valor int sin signo, pero no pude probar eso, ¿tal vez alguien puede?