Contando el número de bits: ¿Cómo funciona esta línea? n = n & (n-1); [duplicar]
Esta pregunta ya tiene una respuesta aquí:
n y (n-1) ¿qué hace esta expresión? [duplicar] 4 respuestasNecesito una explicación de cómo funciona esta línea específica.
Sé que esta función cuenta el número de bits de 1, pero ¿cómo exactamente esta línea borra el bit más a la derecha?
int f(int n) {
int c;
for (c = 0; n != 0; ++c)
n = n & (n - 1);
return c;
}
¿Puede alguien explicármelo brevemente o dar alguna "prueba"?