57 votes

En Java, comment obtenir des positions de ceux sous forme binaire inversée d’un entier?

J’ai une application héritée qui prend un entier, le convertit en chaîne binaire, inverse cette chaîne, puis obtient les positions des bits (uns) sous forme de liste d’entiers. Par exemple:

Quel est un moyen succinct et clair d’accomplir cela dans Java moderne sans les opérations String ? La conversion vers et depuis String me semble inutile, et je sais qu’il n’y a pas de moyen simple de retourner une String `` (non) de toute façon.

58voto

Andy Turner Points 13883

Il suffit de vérifier les bits à tour de rôle:

Démo en ligne

22voto

Christian Fries Points 3010

Puisque vous avez écrit « Java moderne », voici comment cela peut être fait avec des flux (Java 8 ou supérieur):

La carte n’est nécessaire que puisque vous commencez à compter à 1 et non à 0.

Alors

Impressions

16voto

Eritrean Points 2744

Je préférerais certainement la réponse d’Andy moi-même, même si elle semble cryptique au début. Mais puisque personne ici n’a encore de réponse avec les flux (même s’ils sont totalement déplacés ici):

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X