Bitzählalgorithmus (Brian Kernighan) in ganzzahliger Zeitkomplexität

Kann jemand erklären, warum Brian Kernighans Algorithmus O (log N) benötigt, um gesetzte Bits (1s) in einer ganzen Zahl zu zählen. Eine einfache Implementierung dieses Algorithmus finden Sie weiter unten (in JAVA).

int count_set_bits(int n){
    int count = 0;
    while(n != 0){
        n &= (n-1);
        count++;
    }
    return count;
}

Ich verstehe, wie es funktioniert, indem ich das Bit ganz rechts eins nach dem anderen lösche, bis es 0 wird, aber ich weiß nur nicht, wie wir O (log N) bekommen.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage