# Bit Wert umdrehen



## mephi (27. Apr 2009)

Hi,

bin gerade dabei für die FH ein Spracherkennungsprog zu schreiben. Bin jetzt bei der iterativen FFT und ich frage mich wie ich am geschicktesten Bits umdrehe? Also 001 -> 100, 010 -> 010, usw..
Gibts da eine elegante Möglichkeit? Mit solchen Werten hab ich in Java noch nie etwas zutun gehabt


----------



## maki (27. Apr 2009)

Bitwise and Bit Shift Operators (The Java™ Tutorials > Learning the Java Language > Language Basics)


----------



## mephi (27. Apr 2009)

mit der Antwort hab ich gerechnet. Deswegen weiß ich trotzdem nicht wie ich das umdrehe. Ich will ja nicht invertieren...


----------



## Marco13 (27. Apr 2009)

Wenn du von FFT redest, könnte es sein, dass das so Zeitkritisch ist, dass es sich (bei bytes auf jeden fall, aber ggf. selbst noch bei shorts) lohnen könnte, das ganze einmal in einer Tabelle zu speichern
...
reversed[1] = 4; // 001 -> 100
reversed[4] = 1; // 100 -> 001
...

(Die würde man aber natürlich auch nicht per Hand berechnen, nur braucht man sich, wenn man so eine Tabelle baut, keine extremst-trickreichen Methoden auszudenken...)


----------



## mephi (27. Apr 2009)

jo, das array mit den werten initialisier ich nur einmal am anfang. dachte nur da gibt es etwas geschicktes. bisher hab ich das so gelöst, dass ich mir den bit-wert als string zurückgegeben haben lasse, den string mit führenden nullen gefüllt hab und dann rumgedreht und wieder geparsed.. naja bleib ich halt dabei


----------



## Marco13 (27. Apr 2009)

Naja ... eigentlich ging es ja darum: Wenn man eh eine Lookup-Table macht, ist es fast egal, ob die EINmalige Berechnung dieser Tabelle nun 20 oder 30 millisekunden benötigt ... aber das mit den Strings und dem Auffüllen klingt trotzdem nicht so toll. Schau auch mal in dieser Liste von Bit Twiddling Hacks


----------

