Tu amiga Eliud heredó una granja de su abuela Tigist. Su abuela era inventora y tenía la tendencia de construir cosas de una manera demasiado complicada. El gallinero tiene una pantalla digital que muestra un número codificado que representa las posiciones de todos los huevos que se podrían recoger.
Eliud te pide que escribas un programa que muestre el número real de huevos que hay en el gallinero.
La codificación de la información de posiciones se calcula así:
1 para un huevo que existe o un 0 para un lugar vacío. _ _ _ _ _ _ _
|E| |E|E| | |E|
_ _ _ _ _ _ _
|1|0|1|1|0|0|1|
89
4
_ _ _ _ _ _ _
| | | |E| | | |
_ _ _ _ _ _ _
|0|0|0|1|0|0|0|
8
1
Tu tarea consiste en contar cuántos bits valen 1 en la representación binaria de un número.
¡No uses esa funcionalidad para contar bits que te ofrece tu biblioteca estándar! Resuélvelo por tu cuenta con otras herramientas básicas.
En PHP existen los operadores bit a bit.
Por ejemplo, el operador «bitwise and» (&) se puede usar para comprobar que un bit de un número está definido:
$number = 89; // 0b01011001
$mask16 = 16; // 0b00010000
$mask32 = 32; // 0b00100000
$isMask16 = ($number & $mask16) > 0; // 0b00010000 > 0 => TRUE
$isMask32 = ($number & $mask32) > 0; // 0b00000000 > 0 => FALSE
Regístrate en Exercism para aprender y dominar PHP con 11 conceptos122 ejercicios y mentoría humana real, todo gratis.