Your friend Eliud inherited a farm from her grandma Tigist. Her granny was an inventor and had a tendency to build things in an overly complicated manner. The chicken coop has a digital display showing an encoded number representing the positions of all eggs that could be picked up.
Eliud is asking you to write a program that shows the actual number of eggs in the coop.
The position information encoding is calculated as follows:
1
for an existing egg or a 0
for an empty spot. _ _ _ _ _ _ _
|E| |E|E| | |E|
_ _ _ _ _ _ _
|1|0|1|1|0|0|1|
89
4
_ _ _ _ _ _ _
| | | |E| | | |
_ _ _ _ _ _ _
|0|0|0|1|0|0|0|
16
1
Your task is to count the number of 1 bits in the binary representation of a number.
Keep your hands off that bit-count functionality provided by your standard library! Solve this one yourself using other basic tools instead.
In PHP there are bitwise operators.
For example, the "bitwise and" operator (&
) can be used to check that a bit of a number is defined:
$number = 89; // 0b01011001
$mask16 = 16; // 0b00010000
$mask32 = 32; // 0b00100000
$isMask16 = ($number & $mask16) > 0; // 0b00010000 > 0 => TRUE
$isMask32 = ($number & $mask32) > 0; // 0b00000000 > 0 => FALSE
Sign up to Exercism to learn and master PHP with 11 concepts, 110 exercises, and real human mentoring, all for free.