Guten Abend,
ich muss für die Uni ein Programm schreiben, dass einen 32-Bit-Binärcode in eine float-Zahl umwandelt (z. B.
01000001100100110011001100110011 = 18.4).
Das läuft so weit auch ganz gut; mein Programm erkennt normalisierte und denormalisierte Darstellung, +unendlich, -unendlich, +0 und -0. Das Problem liegt nun darin, dass auch NaNs ausgegeben werden sollen (also Exponent = 255 und Mantisse != 0). Stattdessen wird aber "Infinity" ausgegeben.
Wenn ich den Eingabe-String mit
bearbeite, wird NaN ausgegeben, nicht aber, wenn ich Vorzeichen, Mantisse und Exponent im Voraus trenne und die Gleitkommazahl mit s * m * 2^(e-150) berechne.
Wie gesagt, für alle anderen Werte haut die Methode hin, nur nicht für NaNs.
Ich hoffe, dass ihr mir helfen könnt.
Mit freundlichen Grüßen
ich muss für die Uni ein Programm schreiben, dass einen 32-Bit-Binärcode in eine float-Zahl umwandelt (z. B.
01000001100100110011001100110011 = 18.4).
Das läuft so weit auch ganz gut; mein Programm erkennt normalisierte und denormalisierte Darstellung, +unendlich, -unendlich, +0 und -0. Das Problem liegt nun darin, dass auch NaNs ausgegeben werden sollen (also Exponent = 255 und Mantisse != 0). Stattdessen wird aber "Infinity" ausgegeben.
Wenn ich den Eingabe-String mit
Java:
int x6 = Integer.parseInt(str,2);
float x5 = Float.intBitsToFloat(x6);
Wie gesagt, für alle anderen Werte haut die Methode hin, nur nicht für NaNs.
Ich hoffe, dass ihr mir helfen könnt.
Mit freundlichen Grüßen