import Foundation
/// Rounds a positive unsigned integer to the nearest power of 2.
func roundToNearestPowerOf2(_ n: UInt32) -> UInt32 {
guard n > 0 else { return 0 }
// Compute the previous power of 2 using leadingZeroBitCount
let prevPower = UInt32(1) << (31 - n.leadingZeroBitCount)
let nextPower = prevPower << 1
return (n - prevPower < nextPower - n) ? prevPower : nextPower
}
let num: UInt32 = 37
print("Nearest power of 2: \(roundToNearestPowerOf2(num))")
/*
run:
Nearest power of 2: 32
*/