Ton amie Eliud a hérité d'une ferme de sa grand-mère Tigist. Sa mamie était inventrice et avait tendance à construire les choses de façon exagérément compliquée. Le poulailler dispose d'un affichage numérique qui indique un nombre encodé représentant les positions de tous les œufs que l'on pourrait ramasser.
Eliud te demande d'écrire un programme qui affiche le nombre exact d'œufs dans le poulailler.
L'encodage des positions est calculé comme suit :
1 pour un œuf présent ou un 0 pour un emplacement vide. _ _ _ _ _ _ _
|E| |E|E| | |E|
_ _ _ _ _ _ _
|1|0|1|1|0|0|1|
89
4
_ _ _ _ _ _ _
| | | |E| | | |
_ _ _ _ _ _ _
|0|0|0|1|0|0|0|
8
1
Ta tâche est de compter le nombre de bits à 1 dans la représentation binaire d'un nombre.
Ne touche pas à cette fonctionnalité de comptage de bits fournie par ta bibliothèque standard ! Résous-le toi-même avec d'autres outils de base.
En PHP, il existe des opérateurs bit à bit.
Par exemple, l'opérateur « et » bit à bit (&) permet de vérifier qu'un bit d'un nombre est défini :
$number = 89; // 0b01011001
$mask16 = 16; // 0b00010000
$mask32 = 32; // 0b00100000
$isMask16 = ($number & $mask16) > 0; // 0b00010000 > 0 => TRUE
$isMask32 = ($number & $mask32) > 0; // 0b00000000 > 0 => FALSE
Inscris-toi sur Exercism pour apprendre et maîtriser PHP avec 11 concepts122 exercices, et un vrai mentorat humain, le tout gratuitement.