Poszukuję uproszczonej funkcji odwracającej cyfry binarnej reprezentacji liczby.Slick sposób odwrócić (binarne) cyfry liczby w Pythonie?
Jeśli f
była taka funkcja musiałbym
int(reversed(s),2) == f(int(s,2))
gdy s jest ciągiem zer i jedynek, począwszy od 1.
w tej chwili używam lambda x: int(''.join(reversed(bin(x)[2:])),2)
który jest ok, jak daleko jako zwięzły, ale wydaje się, że jest to dość okrężny sposób.
Zastanawiam się, czy był lepszy (być może szybszy) sposób z operatorami bitowymi, a co nie.
Dlaczego masz wywołanie 'list()' w tam? 'str.join()' potraktuje każdą iterowalną. W ogóle nie uważam tego za rondo - jest napisane dokładnie tak, jak to wyjaśniasz. –
@ Legateware Dobrze, to nie było potrzebne. Czułem, że jest to okrężne w tym sensie, że manipuluję strunami, kiedy wydaje się, że to naprawdę numeryczny problem. Chociaż sugestie, jak poprawić metodę ciągów, są również fajne. – math4tots
@ math4tots: Wydaje się mało prawdopodobne, aby jakakolwiek metoda manipulacji bitami była szybsza, ponieważ nieuchronnie wiązałaby się z interpretowanymi pętlami. Jest to oczywiście ostry kontrast w stosunku do języków takich jak C, w których naturalnym rozwiązaniem jest bit twiddling. – NPE