def highest_power_of_2_less_or_equal_to_n(n):
power = 0
for i in range(n, 0, -1):
# i == power of 2 ?
if ((i & (i - 1)) == 0): # 10 (1010) 9 (1001) 8 (1000) 7 (0111)
power = i
break
return power
n = 17
print(highest_power_of_2_less_or_equal_to_n(n))
n = 10
print(highest_power_of_2_less_or_equal_to_n(n))
n = 64
print(highest_power_of_2_less_or_equal_to_n(n))
'''
run:
16
8
64
'''