[TIP][BITS] Comprobar si es multiple de potencia de dos...

Iniciado por Karcrack, 26 Agosto 2010, 23:29 PM

0 Miembros y 1 Visitante están viendo este tema.

Karcrack

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 (vb) [Seleccionar]
n = 2^x ' Potencia de dos
es_mutiple = (i And (n-1) = 0)


Para que lo entendais voy a poner un par de ejemplos:
CitarEs 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
CitarEs 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 :)

Psyke1

#1
Perfecto Karcrack, ahora ya se un poco mas...  :rolleyes:

Gracias! ;)

DoEvents¡! :P