define('BIT_SIZE', 16);
// Function to print binary representation of the bits
function printBinary(int $bits): void {
for ($i = BIT_SIZE - 1; $i >= 0; $i--) {
echo ($bits >> $i) & 1;
}
echo PHP_EOL;
}
function findFirstSetBit(int $bits): int {
for ($i = 0; $i < BIT_SIZE; $i++) {
if (($bits >> $i) & 1) {
return $i;
}
}
return -1; // No bits set
}
function printSetBitIndexes(int $bits): void {
for ($i = 0; $i < BIT_SIZE; $i++) {
if (($bits >> $i) & 1) {
echo $i . ' ';
}
}
echo PHP_EOL;
}
$bits = 0;
$bits |= (1 << 3);
$bits |= (1 << 5);
$bits |= (1 << 11);
$bits |= (1 << 14);
printBinary($bits);
echo "First set bit at index: " . findFirstSetBit($bits) . PHP_EOL;
echo "All the set bits indexes:" . PHP_EOL;
printSetBitIndexes($bits);
/*
run:
0100100000101000
First set bit at index: 3
All the set bits indexes:
3 5 11 14
*/