2010-08-16 24 views
4

Un tableau booléen peut être considéré comme un nombre binaire, par ex. Je souhaite convertir un tel tableau en son équivalent décimal, par ex.Java - Convertir booléen [] en décimal

int decimal = convertBooleanArrayToDecimal(four); 
//decimal == 4 

Comment puis-je faire?

Cheers,

Pete

Répondre

5

Essayez quelque chose comme ça.

long result = 0; 
for (boolean bit : four) { 
    result = result * 2 + (bit ? 1 : 0); 
} 
+0

Veuillez revoir cette expression! Je crois que vous multipliez par (2 + bits) plutôt que d'ajouter peu et de multiplier par 2. –

+0

@Carl: Je suis sûr que la multiplication a la priorité. Mais une paire de parens pour clarifier/s'assurer que ça ne ferait pas de mal. – BlairHippo

+0

@Carl Vous avez raison, j'ai vu une erreur aussi et l'ai réparée. –

3

Une solution alternative:

long result = 0; 
for (boolean bit: boolArray) 
{ 
    result <<= 1; 
    if (bit) result += 1; 
} 

Ceci est mathématiquement équivalent à la solution de Nikita, mais je trouve la version décalage de bits pour être plus clair.

Questions connexes