Comptage de bits utilisés dans int

Si vous avez le nombre binaire 10110 comment puis-je le faire revenir 5? e.g un nombre qui indique combien de bits sont utilisés? Il y a quelques même les exemples ci-dessous:

  • 101 doit revenir 3
  • 000000011 doit retourner 2
  • 11100 devrait revenir 5
  • 101010101 doit retourner 9

Comment cela peut-il être obtenu de la façon la plus simple en Java? Je suis venu avec la méthode suivante, mais je peux être plus rapide:

public static int getBitLength(int value)
{
    if (value == 0)
    {
        return 0;
    }
    int l = 1;
    if (value >>> 16 > 0) { value >>= 16; l += 16; }
    if (value >>> 8 > 0) { value >>= 8; l += 8; }
    if (value >>> 4 > 0) { value >>= 4; l += 4; }
    if (value >>> 2 > 0) { value >>= 2; l += 2; }
    if (value >>> 1 > 0) { value >>= 1; l += 1; }
    return l;
}
en java int toujours utilise 32 bits
Il semble que vous manuellement déroulé une boucle, là.
Le titre est trompeur, car tous les 32 bits sont toujours utilisés dans un int.
Je sais le titre est un peu trompeur, mais je ne sais pas comment l'appeler, si vous avez des suggestions merci de nous l'envoyer et je vais modifier le titre.
Remarque ce sont les mêmes que log2(value)+1 stackoverflow.com/questions/3305059/...

OriginalL'auteur sigvardsen | 2010-05-29