Su tarea es escribir un programa, en cualquier idioma, que suma dos números de coma flotante juntos sin el uso de ningún matemáticas de punto flotante o fraccionarios. Se permiten las matemáticas enteras.
Formato
El formato de los números son cadenas que contienen 1 y 0 que representan el valor binario de un flotante IEEE 754 de 32 bits . Por ejemplo, el número 2.54 estaría representado por la cadena "01000000001000101000111101011100".
Objetivo
El programa debe ingresar dos números en el formato mencionado anteriormente, sumarlos y generar el resultado en el mismo formato. ¡La respuesta más corta en cualquier idioma gana!
Reglas
Absolutamente no se permiten las funciones matemáticas de coma flotante, decimales ni ningún tipo de entero.
Puede suponer que la entrada está limpia (es decir, contiene solo 1 y 0).
Puede suponer que las entradas son números y no Inf, -Inf o NaN o subnormal. Sin embargo, si el resultado es mayor que el valor máximo o menor que el valor mínimo, debe devolver Inf e -Inf respectivamente. Un resultado subnormal (denormal) se puede volcar a 0.
No tiene que manejar el redondeo correctamente. No te preocupes si tus resultados son pocos.
Pruebas
Para probar sus programas, puede convertir entre números binarios decimales y de coma flotante utilizando esta herramienta .
1000 + 0.5 = 1000.5
01000100011110100000000000000000 + 00111111000000000000000000000000 = 01000100011110100010000000000000
float.MaxValue + float.MaxValue = Infinity
01111111011111111111111111111111 + 01111111011111111111111111111111 = 01111111100000000000000000000000
321.123 + -123.321 = 197.802
01000011101000001000111110111110 + 11000010111101101010010001011010= 01000011010001011100110101010000
¡Buena suerte!