multiplicar-o-dividir-en-binario

Cómo multiplicar o dividir números enteros en binario

Las operaciones binarias de multiplicación, división entera y resto son ampliamente utilizadas en programación para realizar cálculos matemáticos y procesamiento de datos.

Al igual que la suma y la resta binaria, estas operaciones no son demasiado diferentes a sus equivalentes en sistema decimal. De hecho, incluso más sencillas de realizar.

Lo único que tendremos que tener en cuenta es lo que vimos en la entrada anterior sobre sumas y restas, y comparaciones en sistemas binarios.

Multiplicación entera binaria

La multiplicación binaria es una operación fundamental que se utiliza para calcular el producto de dos números binarios.

Al igual que en la multiplicación decimal:

  • Se multiplican los bits correspondientes de los números
  • Se suman los resultados parciales, teniendo en cuenta las posiciones relativas de los bits.

Por ejemplo, para multiplicar los números binarios 1011 (11 en decimal) y 1101 (13 en decimal):

    1011
  × 1101
  _______
    1011  (1011 × 1)
+0000000  (1011 × 0, desplazado un lugar a la izquierda)
+0101100  (1011 × 1, desplazado dos lugares a la izquierda)
+1011000  (1011 × 1, desplazado tres lugares a la izquierda)
________
10001111

El resultado es 10001111, que es igual a 143 en decimal.

De hecho, como vemos, la operación depende de los dígitos del segundo factor.

  • Si el dígito es un 0 , se van a convertir en todo 0, así que no hace falta que lo incluyamos
  • Si el dígito es un 1, aporta una suma con un desplazamiento a la izquierda

Además, podemos usar que la multiplicación es conmutativa para poner “como segundo operador” el que tenga más 0. Así tendremos menos sumas que hacer.

Así que, básicamente, la multiplicación binaria se convierte en:

  • Reordena los números para que quede como segundo factor el que tenga más 0 (te simplificará las cosas)
  • Ahora recorre el número de derecha a izquierda. Cada 1 aporta un número a la suma, desplazado hacia la izquierda.
  • Ahora haz todo el montón de sumas que te toque.

Básicamente no hay mucha dificultad. La única es que si los números son largos, te va a tocar hacer muchas sumas. Lo cuál para un ordenador no es problema, pero a mano… pues sí, no te voy a negar que es un poco peñazo (dile a tu profesor que no se pase, que para eso están las calculadoras).

División entera binaria

La división entera binaria es una operación que calcula el cociente de la división entera entre dos números binarios (al igual que en la división decimal)

  • Se comienza dividiendo el bit de mayor peso del numerador por el del divisor y se escribe el resultado debajo del numerador.
  • Se multiplica el divisor por el resultado y se resta del numerador
  • El proceso se repite hasta que se haya dividido todos los bits.

Por ejemplo, para dividir el número binario 1101 (13 en decimal) entre 101 (5 en decimal)

1101 (dividendo) / 101 (divisor)
  __________
 1101  | 101 
- 101     10 (cociente)
______
   11   (resto)

El cociente es 10 (2 en decimal), y el resto es 11 (3 en decimal).

No os voy a engañar. Al igual que en el caso de la división decimal, la división binaria es la más pesada de hacer “a mano” de las que hemos visto. Es fácil, pero requiere muchas comparaciones y restas.

Vamos a ver el proceso de hacer la división “a mano” fácilmente.

  • Ponemos dividendo y divisor
  • Desplazamos el divisor hasta que no quepa en el dividendo
  • Restamos, obteniendo el resto
  • Repetimos la operación hasta que el resto sea más pequeño que el divisor
  • El cociente tendrá un 1 en cada desplazamiento que hayamos hecho

Ejemplo

Vamos a dividir el número binario 1101 (13 en decimal) entre 101 (5 en decimal)

  1101 
/  101

Empezamos desplazando a la izquierda 101 hasta que no quepa.

   1101 
/  1010  (<< 1, cabe)

   1101 
/ 10100  (<< 2, ya no cabría)

Así que ya sabemos que el cociente tiene un 1 en la posición 2. Ahora restamos para calcular el resto.

   1101 
-  1010
--------
     11

Y en este caso, el divisor 101 ya no cabe en el resto 11, así que el divisor queda 10 y el resto final 11.

Si hubiera más dígitos y el divisor cupiera en el resto, repetiríamos la operación. Desplazo y resto, desplazo y resto… En cada paso obtendría un dígito del cociente, hasta que ya no quepa el divisor en el resto.

No es un proceso difícil, pero sí es lento y propenso a fallos. Así que si alguna vez tenéis que hacer una división binaria “a mano”, paciencia y cabeza fría, que al final sale.