Axel: Gleitkommadarstellung, 16 Bit

Hi,

die Darstellung von Zahlen wie 1,2345 z.B. klappt nun schon langsam in der 16 Bit Gleitkommadarstellung.
Jetzt soll ich aber auch noch eine Ganzzahl 23456 in die Darstellung bringen. Nun weiß ich aber nicht, wie es dabei dann zu der Mantisse kommt. Nehme ich
0*(2^-1)+1*(2^-2)+ usw.
=> 01...

oder mit DIV und MOD wie es bei der bisherigen Umrechnung von Ganzzahlen in binär üblich war?

Danke für Hilfe

  1. Hallo Axel,

    die Darstellung von Zahlen wie 1,2345 z.B. klappt nun schon langsam in der 16 Bit Gleitkommadarstellung.

    ups, das ist recht ungewöhnlich und kann wohl nur für einen recht kleinen Wertebereich und/oder eine geringe Genauigkeit funktionieren.

    Jetzt soll ich aber auch noch eine Ganzzahl 23456 in die Darstellung bringen. Nun weiß ich aber nicht, wie es dabei dann zu der Mantisse kommt.

    Die gängigen Implementierungen stellen Fließkommazahlen dar, indem die Mantisse auf den Zahlenbereich [½ .. 1[ normalisiert wird. Dein Zahlenbeispiel 23456 (binär: 0101 1011 1010 0000) wäre damit also

    0.1011011101(b) * 2^15

    Du dividierst also den Wert so oft durch 2, bis das Ergebnis kleiner 1, aber noch größer oder gleich ½ ist. Die Anzahl der Divisionen (bzw. Rechts-Shifts) ist dann der Exponent, der verbliebene Quotient die Mantisse.
    Das Prinzip funktioniert auch in umgekehrter Richtung, wenn die ursprüngliche Zahl kleiner als ½ ist: Verdopple sie so oft (Links-Shift), bis sie größer oder gleich ½, aber kleiner 1 ist. Der Exponent ergibt sich dann auch als Anzahl der Shifts (aber negativ!), die Mantisse wie vorher.
    Nur wenn die Ausgangszahl schon im Intervall [½ .. 1[ liegt, kannst du sie direkt als Mantisse übernehmen, der Exponent ist dann 0.

    oder mit DIV und MOD wie es bei der bisherigen Umrechnung von Ganzzahlen in binär üblich war?

    Huch? An welches komplizierte Verfahren denkst du da?

    So long,
     Martin

    --
    Alleine sind wir stark ...
    gemeinsam sind wir unausstehlich!
    1. Hi Martin,

      oder mit DIV und MOD wie es bei der bisherigen Umrechnung von Ganzzahlen in binär üblich war?
      Huch? An welches komplizierte Verfahren denkst du da?

      Was Du als "verbliebene Quotient" bezeichnest, erhält man rechnerisch durch MOD bzw %... DIV ist das ganzzahlige Ergebnis (ggf. abgerundet) der Division; also redet ihr wohl mehr oder weniger vom selben ;-)

      Weil es gerade zum Thema passt, an dieser Stelle die Frage:
      Kennt Ihr ein nettes Applet, dass auf die schnelle mal eben die Darstellung von Gleitpunktzahlen in XX Bit Darstellung ausgibt?

      Schönen Abend noch

      1. Hallo,

        oder mit DIV und MOD wie es bei der bisherigen Umrechnung von Ganzzahlen in binär üblich war?
        Huch? An welches komplizierte Verfahren denkst du da?
        Was Du als "verbliebene Quotient" bezeichnest, erhält man rechnerisch durch MOD bzw %... DIV ist das ganzzahlige Ergebnis (ggf. abgerundet) der Division; also redet ihr wohl mehr oder weniger vom selben ;-)

        da bin ich mir noch nicht sicher - ich habe in meiner Erklärung ja nur Divisionen durch 2 bzw. Multiplikationen mit 2 erwähnt, die man der Effizienz halber wohl durch Shift-Operationen realisieren wird. Ich würde nie auf die Idee kommen, das wirklich als Division hinzuschreiben oder zu realisieren, auch nicht als Modulo.

        Weil es gerade zum Thema passt, an dieser Stelle die Frage:
        Kennt Ihr ein nettes Applet, dass auf die schnelle mal eben die Darstellung von Gleitpunktzahlen in XX Bit Darstellung ausgibt?

        Nee, aber nach der Beschreibung müsstest du das relativ einfach selbst hinbekommen. ;-)

        So long,
         Martin

        --
        Der Bäcker schlägt die Fliegen tot
        Und macht daraus Rosinenbrot.
  2. Hallo nochmal,

    oder mit DIV und MOD wie es bei der bisherigen Umrechnung von Ganzzahlen in binär üblich war?

    da war ich wohl vorhin nicht bei der Sache - ich glaubte, "von Gleitkommazahlen in binär" gelesen zu haben.
    Moment: Ganzzahlen werden doch sowieso schon in ihrer exakten binären Form gespeichert. Was willst du daran also noch "in binär umrechnen"? Das ist doch dann keine Umrechnung, sondern höchstens eine andere Darstellungsart - so als würde ich "Wechselstrom" in einem Fall durch das Kürzel AC darstellen, in einem anderen Fall durch eine Wellenlinie.

    So long,
     Martin

    --
    Lebensmotto der Egoisten:
    Was ist so schlimm daran, dass jeder nur an sich selbst denkt? Dann ist doch an alle gedacht!