Imports System
Public Class Test
Public Shared Function highest_power_of_2_less_or_equal_to_n(n as Integer)
Dim power As Integer = 0
Dim i As Integer
For i = n to 1 step -1
' i == power of 2 ?
If ((i AND (i - 1)) = 0) Then ' 10 (1010) 9 (1001) 8 (1000) 7 (0111)
power = i
Exit For
End If
Next
return power
End Function
Public Shared Sub Main()
Dim n as Integer = 17
Console.WriteLine(highest_power_of_2_less_or_equal_to_n(n))
n = 10
Console.WriteLine(highest_power_of_2_less_or_equal_to_n(n))
n = 64
Console.WriteLine(highest_power_of_2_less_or_equal_to_n(n))
End Sub
End Class
' run:
' 16
' 8
' 64