Zahlenformate und deren Darstellung

Gast #3075842
Lesenswert?

Hi Leute,

ich habe hier eine Aufgabe, bei der ich nicht weiterkomme. Ich hoffe Ihr 
könnt mir helfen. Die Aufgabe lautet wie folgt:

"Stellen Sie das Ergebnis -2.75 als Gleitkommazahl im 8Bit 
Minifloat-Format
(1.4.3.7) bestmöglich dar. Bitte zusätztlich in diesem Format angeben 
(1.4.3)."


Ich weiss, dass die erste Stelle für das Vorzeichenbit steht, die 4 für 
den Exponenten, die 3 für Mantisse und die 7 für Bias steht. Beim 
zweiten soll man den Bias vernachlässigen. Kann mir das jemand erklären 
und die zu beachtenden Schritte schildern, wie man das, wie oben 
gewünscht, darstellt?


Gruss
Thomas
Gast #3075858
Lesenswert?

also 8 bit sind 8 bit, du zählst ja drüber hinaus.

und dann würde das binär bedeuten

x   x  x  x     x    x    x     x

VZ  2^1  2^0 . 1/2  1/4  1/8  1/16

falls man das verstehen kann

also in binärdarstellung:

1101 1000    weil das dann genau -2,75 ergibt
Gast #3075862
Lesenswert?

Hi Danke für die schnelle Antwort,
aber ich denke Du hast es in der Festkommazahl Schreibweise gelöst.

Problem hierbei ist, dass man es in Gleitkommazahl Darstellung 
darstellen soll, irgendwie gibt es da wohl eine Norm IE754 oder 
ähnliches.


Danke :)

Gruss
Thomas
#3075895
Lesenswert?

Thomas schrieb:
> Hi Danke für die schnelle Antwort,
> aber ich denke Du hast es in der Festkommazahl Schreibweise gelöst.

Nö.

> die 4 für den Exponenten, die 3 für Mantisse

Bist du dir da ganz sicher?
Normal hat man mehr Bits für die Mantisse und weniger Bits für den 
Exponenten. Warum wird gleich klar werden

tip hat das wohl ähnlich gesehen und die Dinge umgedreht.

Wie ist er drauf gekommen?

du sollst
  -2.75    darstellen

Das Vorzeichen ist klar, das wandert sofort in sein Bit
Damit bleibt die Aufgabe 2.75 mit 4 Bits Mantisse und 3 Bits Exponent 
darzustellen.

gesucht sind also m und e, sodas

     m * ( 2 hoch e ) = 2.75

(Ich schreib im folgenden ^ anstelle von 'hoch')

Wir wissen, dass die Mantisse immer im Bereich 0 bis 1 sein muss. Also 
probieren wir mal.

Kann der Exponent 0 sein?
   -> dann müsste m gleich 2.75 sein, denn (2.75 * 2^0) = 2.75
   -> das kann nicht sein, denn 2.75 als Mantisse ist größer 1

Kann der Exponent 1 sein?
   -> dann müsste m gleich 1.375 sein (also die Hälfte von 2.75)
      denn 1.375 * 2^1 = 2.75
   -> kann auch nicht sein, denn 1.375 ist immer noch größer als 1

Kann der Exponent 2 sein?
   -> dann müsste die Mantisse 0.6875 sein (also die Hälfte von 1.375)
      denn 0.6875 * 2^2 = 2.75
   -> das passt. 0.6875 ist kleiner als 1


In der Praxis dividierst du deine Zahl einfach solange durch 2, bis du 
kleiner als 1 bist, bzw. umgekehrt, bei kleinen Zahlen multiplizerst du 
mit 2 bist du die größte Zahl kriegst, die gerade noch kleiner als 1 
ist. Und: du zählst mit, wie oft du multiplizert und dividiert hast. 
Diese Anzahl ist dein Exponent.

Also: Der Exponent ist also 2 und die Mantisse 0.6875

Die 2 als Exponent lassen sich in Bitform problemlos angeben.
Was ist mit den 0.6875?

Du hast 4 Bits zur Verfügung, mit den Wertigkeiten
  1/2
  1/4
  1/8
  1/16

  x  x  x  x

Um 0.6875 darzustellen, brauchst du da das Bit für 0.5?
Ja, das brauchst du, denn die restlichen 3 Bits zusammen ergeben keine 
0.5 mehr. Da 0.6875 größer als 0.5 ist, musst du also auf jeden Fall das 
0.5 Bit benutzen

   1  x  x  x

was ist mit dem nächsten Bit mit der Wertigkeit 0.25
Sind beide Bits gesetzt
   1  1  x  x
dann wäre das mindestens die Zahl 0.75  (= 0.5 + 0.25)
das ist aber schon zu groß für 0.6875
Also brauchst du das Bit nicht, und es bleibt 0

   1  0  x  x

nächstes Bit 0.125. Würdest du es setzen
   1  0  1  x
dann wäre das mindestens die Zahl 0.625 (= 0.5 + 0.125)
0.625 ist kleiner als die darzustellenden 0.6875. Daher brauchst du 
dieses Bit, denn mit den noch folgenden Bits kannst du keine 0.125 mehr 
erreichen und die brauchst du um deine Zahl zumindest bis auf 0.625 
'anzuheben'.
Also brauchst du dieses Bit auf 1

Was ist mit dem nächsten Bit, mit der Wertigkeit 0.0625?
Setzt du es auf 1

   1  0  1  1
dann ist das die Zahl 0.6875 (= 0.5 + 0.125 + 0.0625)

Und das passt genau. 0.6875 waren in der Mantisse zu erreichen. Das 
Bitmuster

   1  0  1  1

ergibt mit den Bitwertigen ( 0.5 0.25 0.125 0.0625 ) die Darstellung von 
0.6875

also lautet dein Bitmuster

x    x   x   x     x    x    x     x

VZ     2^1  2^0 . 1/2  1/4  1/8  1/16


1    0   1   0     1    0    1     1



Habt ihr denn das in der Schule nicht durchgekaut?
#3075913
Lesenswert?

Und jetzt die Preisfrage:

Warum krieg ich ein anderes Ergebnis raus als 'tip' und wo stimmt meine 
Darstellung nicht mit der IEEE754 überein?

-> und was bedeutet das für die Berechnung?

-> und warum hat IEEE754 eine klein wenig andere Darstellung in der 
Mantisse? (für 10 Zusatzpunkte in der Lösung der Hausaufgabe)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren