Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Karcrack en 26 Agosto 2010, 23:29 pm



Título: [TIP][BITS] Comprobar si es multiple de potencia de dos...
Publicado por: Karcrack en 26 Agosto 2010, 23:29 pm
Como se que a algunos os interesa el tema de los bits voy a compartir este pequeño tip (consejo) que no tiene ningun misterio :laugh:

Se trata de como comprobar utilizando operaciones con bits si un numero es multiple de una potencia de dos... Una potencia de dos es cualquier numero que se haya obtenido de esta expresion: 2x, siendo x un numero entero positivo... (Ej, 2,4,8,16,32...)

Es tan simple como aplicar esta regla:
Código
  1. n = 2^x ' Potencia de dos
  2. es_mutiple = (i And (n-1) = 0)

Para que lo entendais voy a poner un par de ejemplos:
Citar
Es 1992 multiple de 8?
1992 decimal = 0111 1100 1000 en binario
n = 8 --> n - 1 = 7 --> 7 decimal = 111 en binario

0111 1100 1000
AND        111
______________
0000 0000 0000
Citar
Es 12288 multiple de 128?
12288 decimal = 0011 0000 0000 0000 en binario
n = 128 --> n - 1 = 127 --> 127 decimal = 0111 1111 en binario

0011 0000 0000 0000
AND       0111 1111
__________________
0000 0000 0000 0000


No hace falta decir que suele ser mas rapido que hacer Mod ;)

Espero que os sea de ayuda :)


Título: Re: [TIP][BITS] Comprobar si es multiple de potencia de dos...
Publicado por: Psyke1 en 26 Agosto 2010, 23:35 pm
Perfecto Karcrack, ahora ya se un poco mas...  :rolleyes:

Gracias! ;)

DoEvents¡! :P