How to round a number to the nearest power of 2 in Python

2 Answers

0 votes
def round_to_nearest_power_of_2(n: int) -> int:
    if n <= 0:
        return 0

    prev_power = 1
    while prev_power * 2 <= n:
        prev_power *= 2

    next_power = prev_power * 2
    return prev_power if n - prev_power < next_power - n else next_power

num = 37

print(f"Nearest power of 2: {round_to_nearest_power_of_2(num)}")



'''
run:

Nearest power of 2: 32

'''

 



answered Oct 31 by avibootz
edited Oct 31 by avibootz
0 votes
def round_to_nearest_power_of_2(n: int) -> int:
    if n == 0:
        return 0

    # Compute the previous power of 2
    prev_power = 1 << (n.bit_length() - 1)

    # Compute the next power of 2
    next_power = prev_power << 1

    # Return the one closest to n
    return prev_power if n - prev_power < next_power - n else next_power

num = 37

print(f"Nearest power of 2: {round_to_nearest_power_of_2(num)}")




'''
run:

Nearest power of 2: 32

'''

 



answered Oct 31 by avibootz
edited Oct 31 by avibootz
...