5 Stimmen

Wie stelle ich fest, welches Bit in einem unsigned int64 gesetzt ist?

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X