Twoim zadaniem jest napisanie programu, w dowolnym języku, który doda dwie liczby zmiennoprzecinkowe razem BEZ, używając jakiejkolwiek matematyki ułamkowej lub zmiennoprzecinkowej. Matematyka liczb całkowitych jest dozwolona.
Format
Format liczb to ciągi zawierające jedynki i zera, które reprezentują wartość binarną 32-bitowej liczby zmiennoprzecinkowej IEEE 754 . Na przykład liczba 2,54 byłaby reprezentowana przez ciąg „01000000001000101000111101011100”.
Cel
Program powinien wprowadzić dwie liczby w wyżej wymienionym formacie, dodać je razem i wyprowadzić wynik w tym samym formacie. Najkrótsza odpowiedź w dowolnym języku wygrywa!
Zasady
Absolutnie nie są dozwolone funkcje zmiennoprzecinkowe, dziesiętne ani żadne inne funkcje matematyczne.
Możesz założyć, że dane wejściowe są czyste (tzn. Zawierają tylko 1 i 0).
Możesz założyć, że dane wejściowe są liczbami, a nie Inf, -Inf, NaN lub subnormalne. Jeśli jednak wynik jest większy niż wartość maksymalna lub mniejszy niż wartość minimalna, powinieneś zwrócić odpowiednio Inf i -Inf. Wynik nienormalny (denormalny) można spłukać do zera.
Zaokrąglanie nie jest konieczne. Nie martw się, jeśli Twoje wyniki są kilka bitów.
Testy
Aby przetestować swoje programy, możesz konwertować między liczbami binarnymi dziesiętnymi i zmiennoprzecinkowymi za pomocą tego narzędzia .
1000 + 0,5 = 1000,5
01000100011110100000000000000000 + 00111111000000000000000000000000 = 01000100011110100010000000000000
float.MaxValue + float.MaxValue = Nieskończoność
01111111011111111111111111111111 + 01111111011111111111111111111111 = 01111111100000000000000000000000
321,123 + -1123.321 = 197,802
01000011101000001000111110111110 + 11000010111101101010010001011010= 01000011010001011100110101010000
Powodzenia!