Il tuo compito è quello di scrivere un programma, in qualsiasi lingua, che sommi due numeri in virgola mobile SENZA utilizzare qualsiasi matematica frazionaria o in virgola mobile. La matematica integer è consentita.
Formato
Il formato per i numeri sono stringhe contenenti 1 e 0 che rappresentano il valore binario di un float IEEE 754 a 32 bit . Ad esempio il numero 2.54 sarebbe rappresentato dalla stringa "01000000001000101000111101011100".
Obbiettivo
Il programma dovrebbe inserire due numeri nel formato sopra menzionato, aggiungerli insieme e produrre il risultato nello stesso formato. Vince la risposta più breve in qualsiasi lingua!
Regole
Non sono assolutamente consentite funzioni matematiche a virgola mobile, decimale o qualsiasi tipo non intero.
Si può presumere che l'ingresso sia pulito (cioè contiene solo 1 e 0).
Si può presumere che gli ingressi siano numeri e non Inf, -Inf o NaN o subnormali. Tuttavia, se il risultato è maggiore del valore massimo o inferiore al valore minimo, è necessario restituire rispettivamente Inf e -Inf. Un risultato non normale (denormale) può essere portato a 0.
Non è necessario gestire l'arrotondamento correttamente. Non preoccuparti se i risultati sono pochi.
test
Per testare i tuoi programmi, puoi convertire tra numeri binari decimali e in virgola mobile usando questo strumento .
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
In bocca al lupo!