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
n = 2^x ' Potencia de dos 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
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
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