Verificare se un numero è una potenza di 2

Da Gambas-it.org - Wikipedia.

Per verificare se un numero è una potenza di 2, si possono utilizzare almeno le seguenti due modalità.


La prima modalità:

Public Sub Main()
 
 Dim numero, m, c As Integer
 Dim s1, s2 As String
 
   m = 1
   numero = 16

   While m > 0
     If (numero And m) > 0 Then
        Inc c
     Endif
       m = m * CInt(2 * 1)
   Wend
 
   s1 = "Il numero " & numero
   s2 = " è una potenza di 2"
 
   If c = 1 Then
     Print s1; s2
   Else
     Print s1; " non"; s2
   Endif
  
End


La seconda modalità:

Public Sub Main()
 
 Dim numero As Integer
 Dim s As String
 
  s = " è una potenza di 2"
 
  numero = 16
  
  Print IIf(Frac(Log2(numero)) = 0, numero & s, numero & " non" & s)
   
End