Es gibt viele Fragen dazu auf StackOverflow. Viel . Ich kann jedoch keine Antwort finden:
Schneller als:
%Vor%oder sogar
%Vor%Ich nehme hier eine 64-Bit-Intel-CPU an.
Eine nützliche Referenz ist die Seite Bit Hacks und eine andere fxtbook.pdf Während diese jedoch eine nützliche Richtung geben, um das Problem anzugehen, geben sie keine fertige Antwort.
Ich bin hinter einer wiederverwendbaren Funktion, die etwas ähnlich wie _BitScanForward64 und _BitScanReverse64 nur für C #.
Einer der Wege, dies zu tun, der auf der Bit Hacks Seite in der Frage beschrieben wird, ist die De Bruijn Sequenz . Leider gibt diese Seite keine 64-Bit-Version dieser Sequenz. Diese nützliche Seite erläutert, wie De Bruijn-Sequenzen erstellt werden können und dieser gibt ein Beispiel für den in C ++ geschriebenen Sequenzgenerator. Wenn wir den gegebenen Code anpassen, können wir mehrere Sequenzen erzeugen, von denen eine im folgenden C # -Code angegeben ist:
%Vor%Ich habe auch meinen C # -Port des Sequenzgenerators an github
geschicktEin weiterer Artikel, der in der Frage nicht erwähnt wird, mit einem anständigen Cover von De Bruijn Sequenzen, kann hier gefunden werden.
Tags und Links c# bit-manipulation