Algoritmo
Enviado por zucaib79 • 4 de Febrero de 2012 • 327 Palabras (2 Páginas) • 533 Visitas
4) Divisiones encubiertas, o de cómo darle vueltas a lo mismo.
Es posible encontar soluciones que son prácticamente equivalentes a las anteriores... es decir, darle vueltas a lo mismo.
Por ejemplo. Si dado un número entero n lo dividimos por 2 despreciando el resto y lo volvemos a multiplicar por 2, en el caso de que n sea par el resultado de la operación será el mismo número n. Si n fuera impar, el resultado de dividir por 2 y volver a multiplicar no da de nuevo el número n.
Tanto si n es par como impar, vamos a despreciar el resto de la división, pero si n es par el resto de la división es 0, con lo cual, al volver a multiplicar por 2 obtenemos de nuevo n.
Podemos utilizar ésto para construir nuestro método para saber si n es par:
Pero realmente, lo que estamos haciendo es intentar averiguar si el resto de la división de n entre 2 es 0 o no. Así que esta solución es muy parecida a la 1)
También podríamos haber utilizado el desplazamiento de bits. Desplazar bits a la derecha en un número binario es realmente, dividirlo por 2.
Por ejemplo, si tomamos el número 76, en binario es 1001100.
Si desplazamos a la derecha ese número binario y rellenamos el hueco que queda a la izquierda con un 0, obtenemos 0100110, que es el 38.
Volvamos a desplazar a la izquierda, rellenando con 0 el lugar que queda por la derecha... obtenemos de nuevo el 1001100.
Ahora vamos a probar con el 77. En binario es 1001101.
Desplazamos a la derecha: 0100110, que es el 38.
Desplazamos a la izquierda: 1001100.... oops... Es el 76.
Si desplazamos un número binario hacia la derecha y luego hacia la izquierda, realmente dividimos por 2 y volvemos a multiplicar por 2.
En esta operación, un número par perderá su 0 en el bit menos significativo (LSB) y luego lo recuperará, pero un número impar perderá su 1 del LSB y luego recuperará un 0.
...