public class NearestPowerOfTwo {
/**
* Rounds a positive integer to the nearest power of 2.
*
* return the nearest power of 2
*/
public static int roundToNearestPowerOf2(int n) {
if (n <= 0) return 0;
int prevPower = Integer.highestOneBit(n);
int nextPower = prevPower << 1;
return (n - prevPower < nextPower - n) ? prevPower : nextPower;
}
public static void main(String[] args) {
int num = 37;
System.out.println("Nearest power of 2: " + roundToNearestPowerOf2(num));
}
}
/*
run:
Nearest power of 2: 32
*/