Liczenie bitów: Jak działa ta linia? n = n i (n-1); [duplikować]
To pytanie ma już tutaj odpowiedź:
n & (n-1) co robi to wyrażenie? [duplikować] 4 odpowiedziPotrzebuję wyjaśnienia, jak działa ta konkretna linia.
Wiem, że ta funkcja zlicza liczbę bitów 1, ale jak dokładnie ta linia usuwa prawy 1 bit?
int f(int n) {
int c;
for (c = 0; n != 0; ++c)
n = n & (n - 1);
return c;
}
Czy niektórzy mogą mi to krótko wyjaśnić lub podać „dowód”?