Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Averiguar Si Un Número Es Una Potencia De 2
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Averiguar Si Un Número Es Una Potencia De 2 
 
Dejo una propuesta de código para averiguar si un número es una potencia de 2.

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

 



 
última edición por vuott el Miercoles, 06 Julio 2016, 12:50; editado 2 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Averiguar Si Un Número Es Una Potencia De 2 
 
Otro método súper corto y sencillo:

  Dim number As Integer
  number = 32

  Print IIf(Frac(Log2(number)) = 0, "Es potencia de 2", "NO es potencia de 2")


La expresión Log2(number) Mod 1 = 0 es equivalente, pero Mod no funciona con Float.

Saludos  
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Averiguar Si Un Número Es Una Potencia De 2 
 
jguardon escribió: [Ver mensaje]
.... pero Mod no funciona con Float.


Tal vez hay una alternativa... al usar la función externa fmod( ) o drem( ), declarada en el archivo header /usr/include/x86_64-linux-gnu/bits/mathcalls.h.


Exemplum simplex et minimum:
Library "libm:6"

' fmod (_Mdouble_ __x, _Mdouble_ __y)
' Floating-point modulo remainder of X/Y.
Private Extern fmod(__x As Float, __y As Float) As Float


Public Sub Main()

  Dim f As Float
  
    f = fmod(23.123, 7.076)
    
    Print f

End
   neutral
 



 
última edición por vuott el Miercoles, 17 Agosto 2016, 16:29; editado 2 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Ayuda Con El Simblo De Potencia En Gambas ... ivanovichenco General 15 Lunes, 08 Noviembre 2010, 21:38 Ver último mensaje
Invitado
No hay nuevos mensajes Averiguar El Número De Serie O El UUID De... shordi General 2 Jueves, 02 Octobre 2014, 17:14 Ver último mensaje
shordi
No hay nuevos mensajes Funciones Sobre Potencia De 2: Bits Y And jsbsan Javascript 15 Sabado, 02 Abril 2016, 11:31 Ver último mensaje
jsbsan
No hay nuevos mensajes Posible Codigo Para Averiguar Si Un Númer... vuott Aplicaciones/Fragmentos de Código 8 Viernes, 12 May 2017, 17:39 Ver último mensaje
vuott
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron