Wieso benutzt ihr nicht einfach eine Lookuptabelle? Das dürfte
IMHO das bei weitem schnellste sein (1-2 Takte pro Byte), sämtliche Optimierungsüberlegungen sind damit hinfällig, und zur Not gehts auch in nativem Delphi:
Delphi-Quellcode:
Type TFourBytes = Array [0..3] Of Byte;
Function ReverseBits (aValue : Integer) : Integer;
Begin
TFourBytes(Result)[3] := rbLookup[TFourBytes(aValue)[0]];
TFourBytes(Result)[2] := rbLookup[TFourBytes(aValue)[1]];
TFourBytes(Result)[1] := rbLookup[TFourBytes(aValue)[2]];
TFourBytes(Result)[0] := rbLookup[TFourBytes(aValue)[3]];
End;
Wobei in rbLookup[b] der die Bit-Inverse der Zahl b (0..255) steht.