Multiplicar números de punto flotante

Prerrequisito – Estándar IEEE 754 Números de punto flotante
Problema:
Aquí, hemos discutido un algoritmo para multiplicar dos números de punto flotante, x e y.

Algoritmo:-

  1. Convierta estos números en notación científica, de modo que podamos representar explícitamente el 1 oculto.
  2. Sea ‘a’ el exponente de x y ‘b’ el exponente de y.
  3. Suponga que el exponente resultante c = a+b. Se puede ajustar después del siguiente paso.
  4. Multiplique la mantisa de x por la mantisa de y. Llame a este resultado m.
  5. Si m no tiene un solo 1 a la izquierda del punto de base, entonces ajuste el punto de base para que lo tenga, y ajuste el exponente c para compensar.
  6. Agregue bits de signo, mod 2, para obtener el signo de la multiplicación resultante.
  7. Vuelva a convertir a una representación de punto flotante de un byte, truncando bits si es necesario.

Nota:
Los valores negativos son fáciles de resolver en la multiplicación de punto flotante. Trate el bit de signo como binario sin signo de 1 bit, agregue mod 2. Esto es lo mismo que XORing el bit de signo.

Ejemplo:
suponga que desea multiplicar los siguientes dos números:

Ahora, estos son pasos de acuerdo con el algoritmo anterior:

  1. Dado, A = 1,11 x 2^0 y B = 1,01 x 2^2
  2. Entonces, el exponente c = a + b = 0 + 2 = 2 es el exponente resultante.
  3. Ahora, multiplique 1.11 por 1.01, entonces el resultado será 10.0011
  4. Necesitamos normalizar 10.0011 a 1.00011 y ajustar el exponente 1 por 3 apropiadamente.
  5. Bit de signo resultante 0 (XOR) 0 = 0, significa positivo.
  6. Ahora, trunque y normalícelo de 1.00011 x 2^3 a 1.000 x 2^3.

Por lo tanto, el número resultante es,

De manera similar, podemos multiplicar otros números de coma flotante.

Publicación traducida automáticamente

Artículo escrito por rajkumarupadhyay515 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *