Ich suche nach einer glatten Funktion, die die Ziffern der Binärdarstellung einer Zahl umkehrt.Slick Weg, um die (Binär-) Ziffern einer Zahl in Python umzukehren?
Wenn f
waren solche Funktion würde ich
int(reversed(s),2) == f(int(s,2))
, wenn s eine Folge von Nullen und Einsen ist, beginnend mit 1.
Im Moment bin ich mit lambda x: int(''.join(reversed(bin(x)[2:])),2)
die so weit in Ordnung ist wie Prägnanz betrifft, aber es scheint eine schöne Umwegsweise zu sein.
Ich fragte mich, ob es einen schöneren (vielleicht schneller) Weg mit bitweisen Operatoren gab und was nicht.
Warum haben Sie den Aufruf von 'list()' da drin? 'str.join()' nimmt alle iterablen Werte an. Ich sehe das auch nicht als Karussell - es ist fast genau so geschrieben, wie du es erklärst. –
@Lattyware Richtig, das war nicht nötig. Ich habe das Gefühl, es war ein Karussell in dem Sinne, dass ich Strings manipuliere, wenn es wirklich wie ein numerisches Problem aussieht. Obwohl, Vorschläge zur Verbesserung der String-Methode ist auch cool. – math4tots
@ math4tots: Es scheint unwahrscheinlich, dass irgendeine Methode, die Bitmanipulation mit einbezieht, schneller wäre, da dies zwangsläufig interpretierte Schleifen involvieren würde. Dies steht natürlich in starkem Kontrast zu Sprachen wie C, in denen das Bit-Twiddeln der natürliche Weg wäre. – NPE