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 🤡


Anmelden zum Antworten