Mantisse, Exponent und Vorzeichen aus 32bit-Float extrahieren



  • Hi,

    ich bin gerade an einer kleinen Aufgabe und bräuchte ein paar Anhaltspunkte, ob meine Lösung stimmt oder nicht. Ich muss aus einem 32 bit Float das Vorzeichen (einfach), die Mantisse und den Exponenten extrahieren.

    Leider finde ich kein Tool, mit dem ich meine Ergebnisse testen kann. Vielleicht könnt ihr mir ja sagen, ob sie in etwa stimmen oder nicht.

    Eingabe: -133.333
    Vorzeichen: 0
    Mantisse: 2534056
    Exponent: 10

    Eingabe: 0
    Vorzeichen: 0
    Mantisse: 0
    Exponent: -127 (?!?!?)

    Eingabe: -9.854
    Vorzeichen: 1
    Mantisse: 1944060
    Exponent: 3

    Vielleicht könnt ihr mir ja sagen, ob das so stimmt.

    Zum Extrahieren des Vorzeichens führe ich ein bitweises Und mit dem LSB = 1 und dem Rest = 0 aus. Zum Extrahieren der Mantisse setze ich die niedrigwertigsten 23(falls es das Wort gibt) Bits auf 1, die anderen auf 0 und verunde dann mit meiner Originalzahl. Den Exponenten bekomme ich durch das ver-&en mit 01111111100000....00, danach schiebe ich das Resultat um 23 bits nach Rechts und schließlich ziehe ich noch 127 (Bias) vom Ergebnis ab.

    So, jetzt hoffe ich, dass mir jemand helfen kann 🙂

    Lg Ibehs



  • Gemäß C Standard muss der Datentyp float nicht 32 Bit groß sein.
    Gemäß C Standard muss der Datentyp float nicht IEEE 754 entsprechen.

    Schau dir mal frexp aus math.h an.

    http://babbage.cs.qc.cuny.edu/IEEE-754/index.xhtml



  • Laut Aufgabe sollen wir von 32 bit ausgehen.



  • Und danke für den Link! Meine Ergebnisse scheinen zu stimmen.


Anmelden zum Antworten