Ich habe eine Variable vBit, die ein unsigned int64 ist. Ich weiß, es gibt genau eine Bit gesetzt, und ich muss herausfinden, welches es ist. Derzeit mache ich es wie folgt (in Delphi):
vPos := -1;
repeat
vBit := vBit shr 1;
inc(vPos);
until vBit = 0;
Gibt es einen schnelleren Weg? Alle Bitpositionen sind gleich wahrscheinlich, so dass der Algorithmus im Durchschnitt 32 Mal iterieren muss. Ich bin auf der Suche nach einem eleganten Trick mit ands und xors und so weiter.