Ihre Aufgabe ist es, ein Programm in einer beliebigen Sprache zu schreiben, das zwei Gleitkommazahlen ohne Verwendung von Bruch- oder Gleitkomma-Mathematik addiert . Ganzzahlige Mathematik ist erlaubt.
Format
Das Format für die Zahlen sind Zeichenfolgen mit Einsen und Nullen, die den Binärwert eines IEEE 754 32-Bit-Floats darstellen . Zum Beispiel würde die Nummer 2.54 durch die Zeichenfolge "01000000001000101000111101011100" dargestellt.
Tor
Ihr Programm sollte zwei Zahlen im oben genannten Format eingeben, addieren und das Ergebnis im gleichen Format ausgeben. Die kürzeste Antwort in einer Sprache gewinnt!
Regeln
Es sind absolut keine Gleitkomma-, Dezimal- oder nicht ganzzahligen mathematischen Funktionen zulässig.
Sie können davon ausgehen, dass die Eingabe sauber ist (dh nur Einsen und Nullen enthält).
Sie können davon ausgehen, dass die Eingaben Zahlen sind und nicht Inf, -Inf oder NaN oder subnormal. Wenn das Ergebnis jedoch größer als der Maximalwert oder kleiner als der Minimalwert ist, sollten Sie Inf bzw. -Inf zurückgeben. Ein subnormales (denormales) Ergebnis kann auf 0 gespült werden.
Sie müssen nicht richtig mit Rundungen umgehen. Machen Sie sich keine Sorgen, wenn Ihre Ergebnisse ein paar Punkte entfernt sind.
Tests
Um Ihre Programme zu testen, können Sie mit diesem Tool zwischen Dezimal- und Gleitkomma-Binärzahlen konvertieren .
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
Viel Glück!