function roundToNearestPowerOf2(int $n): int {
if ($n <= 0) {
return 0;
}
// Compute the previous power of 2 using bit length
$prevPower = 1 << (int)floor(log($n, 2));
// Compute the next power of 2
$nextPower = $prevPower << 1;
// Return the one closest to n
return ($n - $prevPower < $nextPower - $n) ? $prevPower : $nextPower;
}
$num = 37;
echo "Nearest power of 2: " . roundToNearestPowerOf2($num) . PHP_EOL;
/*
run:
Nearest power of 2: 32
*/