Gambas-it

Gambas dal mondo esterno => Spagna => Topic aperto da: vuott - 17 Agosto 2016, 00:44:34

Titolo: Verificare se un numero è una Potenza di 2
Inserito da: vuott - 17 Agosto 2016, 00:44:34
 :coder:
Titolo: Re:Verificare se un numero è una Potenza di 2
Inserito da: kicco - 26 Agosto 2016, 21:16:49
 :ciao:
Riporto il codice per chiarezza:
Codice: [Seleziona]
Public Sub Main()

  Dim num, m, c As Integer
  Dim s1, s2 As String

    m = 1
    num = 16    ' El número eligido...
 
    While m > 0
      If (num And m) > 0 Then
       Inc c
    Endif
        m = m * CInt(2 * 1)
    Wend

    s1 = "El número " & num
    s2 = " es una potencia de 2"

    If c = 1 Then
      Print s1; s2
    Else
      Print s1; " no"; s2
   
    Endif

End
Nel ciclo While mi succede qualcosa che non capisco:
m è maggiore di zero (=1)
num è maggiore di zero (=16)
Perchè allora non si incrementa c, che rimane a zero? :-\
Cosa non ho capito?
 :ciao: :ciao:
Titolo: Re:Verificare se un numero è una Potenza di 2
Inserito da: vuott - 26 Agosto 2016, 22:29:42

Perchè allora non si incrementa c, che rimane a zero?
Perché in questo caso l'AND è un Operatore bitwise e non un Operatore logico.