fft: arrayelemente vertauschen
-
hi,
um den fft-algo nutzen zu können, muss ich in einem array einige werte nach folgendem schema vertauschen: aus element 001b wird 100b, aus 011b wird 110b u.s.w. => die bit-reihenfolge wird "umgedreht".
das problem: mir will nichts vernünftiges einfallen, wie ich das bewerkstelligen könnte.
ideen?

-
für 32 bits bin ich mal über fertigen code gestolpert
{ unsigned {32-bit-type} x; /* Reverse the bits of x (32 total). */ x = ((x & 0xAAAAAAAA) >> 1) | ((x & 0x55555555) << 1); x = ((x & 0xCCCCCCCC) >> 2) | ((x & 0x33333333) << 2); x = ((x & 0xF0F0F0F0) >> 4) | ((x & 0x0F0F0F0F) << 4); x = ((x & 0xFF00FF00) >> 8) | ((x & 0x00FF00FF) << 8); x = (x >> 16) | (x << 16); }
-
ok. das sieht schonmal gut aus.
aber nicht ganz das was ich brauche...
ich grenze das problem mal ein: wenn ich den algo ganz durchlaufen lasse, sieht das array genau so aus wie am anfang weil: x == swap(swap(x)).
wie verhindere ich das, ohne ein temporäres array anlegen zu müssen?edit: ok, ok, jetzt seh' ichs. stand wohl etwas auf dem schlauch
