División entre dos
# División entre dos

En el ámbito de las matemáticas, la división entre dos o partición por la mitad, a veces ha sido tratada como una operación matemática diferente de la multiplicación y la división por otros números. Por ejemplo entre los antiguos egipcios su algoritmo de multiplicación utilizaba la división por dos como uno de sus pasos fundamentales. Algunos matemáticos en el siglo XVI, por ejemplo, continuaban considerando a la división por dos como una operación matemática distintiva, y la programación de computadoras modernas a menudo aún la trata en forma separada. Es muy fácil realizar esta operación tanto en el sistema aritmético decimal, como en el sistema numérico binario utilizado en la programación de computadoras, y otras bases de numeración pares.

## Binaria

En la aritmética binaria, la división entre dos puede efectuarse por medio de una operación conocida como desplazamiento de bits (en inglés bit shift), la cual desplaza el número un lugar a la derecha. Esto es una forma de optimización conocida como "strength reduction" (reducción de fuerza). Por ejemplo, 1101001 en binario (el número decimal 105), desplazado un lugar a la derecha es 110100 (el número decimal 52): el bit de orden menor, el 1, es removido. Similarmente, la división por cualquier potencia de dos $2^k$ puede efectuarse desplazando a la derecha k posiciones. Como los "bit shifts" son a menudo operaciones mucho más rápidas que la división, reemplazar una división por un desplazo en esta forma puede ser un paso útil en la optimización de programas. Sin embargo, para mantener la portabilidad del programa y su legibilidad, a menudo es mejor escribir programas utilizando la operación de división y confiar en que el compilador llevará a cabo este reemplazo.

Sin embargo, no siempre son verdaderas las afirmaciones antedichas, cuando se trata de dividir números binarios con signo. Desplazar a la derecha 1 bit divide por dos, siempre redondeando hacia abajo. Sin embargo, en algunos lenguajes, la división de números binarios con signo se redondea hacia el cero (que si el resultado es negativo, significa que redondea para arriba). Por ejemplo, Java es uno de estos lenguajes: en Java, -3 / 2 da por resultado -1, mientras que -3 >> 1 da por resultado -2. Por lo que en este caso, el compilador no puede optimizar la división por dos reemplazándola por un desplazamiento de bit, cuando es posible que el dividendo pueda ser negativo.

## Decimal

El siguiente algoritmo es para un número expresado en base decimal. Sin embargo el mismo puede ser usado como un modelo para construir un algoritmo para calcular la mitad de todo número N en cualquier base par.

* Escriba N, colocando un cero a su izquierda.
* Recorra los dígitos de N en pares solapados, escribiendo los dígitos del resultado de la siguiente tabla.

| Si el primer dígito es | Par | Par | Par | Par | Par | Impar | Impar | Impar | Impar | Impar |
| - | - | - | - | - | - | - | - | - | - | - |
| Y el segundo dígito es | 0 o 1 | 2 o 3 | 4 o 5 | 6 o 7 | 8 o 9 | 0 o 1 | 2 o 3 | 4 o 5 | 6 o 7 | 8 o 9 |
| Escriba | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |

Ejemplo: 1738/2=?

escriba 01738. Ahora buscaremos el resultado.

* 01: dígito par seguido de 1, escriba 0.
* 17: dígito impar seguido de 7, escriba 8.
* 73: dígito impar seguido de 3, escriba 6.
* 38: dígito impar seguido de 8, escriba 9.

Resultado: 0869.

En el ejemplo se observa que 0 es par.

Si el último dígito de N es impar sume 0.5 al resultado.

