PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Gleit- und Festkommazahlen



BlackSpike666
15.05.2017, 02:45
Hey ho,

ich hab ein Problem bei der Beantwortung folgender Fragen und dachte ich stell sie euch mal :D

Wie viel verschiedene Zahlen können mit folgenden Zahlenformaten repräsentiert werden? (Ergebnis als natürliche Zahl angeben)
a) Wie viele Zahlen können mittels IEEE 754 Gleitkommazahlen mit einfacher Genauigkeit (ohne NaN und ∞) representiert werden?
b) Wie viele Zahlen können mittels 32-bit Fixpunktzahlen dargestellt werden?


bei der a) dachte ich 2(32-8) = 16777216, also abzüglich den 8 Bits für den Exponent aber die Antwort stimmt nicht. Und falls ich das Thema richtig verstanden habe, sollte der IEEE Standart mehr Zahlen representieren können als das Festkommasystem, also b) müsste < a) sein?

Über einen Lösungsvorschlag zu a) & b) + kurzer Erklärung wär ich sehr dankbar :)

s3rb31
15.05.2017, 21:54
Wenn es nach Hausaufgaben riecht ...

Also zu a):



2 Möglichkeiten für das Vorzeichenbit
2⁸ Möglichkeiten für den Exponenten
2²³ Möglichkeiten für die Mantisse

Da aber im Exponenten nur für NaN und Infinity alle Bits auf 1 stehen,
gilt laut Aufgabenstellung (2⁸ - 1) Möglichkeiten für den Exponenten.

Ausrechnen: 2 (Vorzeichen) * (2⁸ - 1) * 2²³ (Mantisse) = 4278190080


zu b)



32 Bit => 2³² = 4294967296 versch. Zahlen


Da beide Zahlenformate gleiche viele Bits benutzen wüsste ich nicht wie es sein könnte dass eines der beiden mehr unterschiedliche Zustände repräsentieren kann als das andere. Geht doch garnicht.

Bei IEEE 754 werden nur Zustände doppelt belegt (2*Null, 2*Inf, NaN), deswegen sind hier weniger unterschiedliche Zahlen darstellbar. Die Genauigkeit der darstellbaren Zahlen ist dort allerdings höher.

BlackSpike666
17.05.2017, 22:36
Erstmal vielen Dank für deine Antwort und die Erklärung! Hört sich für mich auch schlüssig an, aber leider ist die Antwort a) falsch ;(

Zur b) die ist natürlich richtig, hätte man auch selbst drauf kommen können ;)

Leange
17.05.2017, 23:28
4278190080 - 1 weil +/-0 die gleiche Zahl? Kp

Leange

BlackSpike666
18.05.2017, 18:16
4278190080 - 1 weil +/-0 die gleiche Zahl? Kp

Leange

:applause: Okay, ist eindeutig nicht mein Thema :D

Vielen Dank für die Antwort :)


a) Wie viele Zahlen können mittels IEEE 754 Gleitkommazahlen mit einfacher Genauigkeit (ohne NaN und ∞) representiert werden?
2 (Vorzeichen) * (2⁸ - 1) * 2²³ (Mantisse) = 4278190080 - 1 (für die +/- Null) = 4278190079

b) Wie viele Zahlen können mittels 32-bit Fixpunktzahlen dargestellt werden?
32 Bit => 2³² = 4294967296

s3rb31
18.05.2017, 19:10
Erstmal vielen Dank für deine Antwort und die Erklärung!

Keine Ursache!


Hört sich für mich auch schlüssig an, aber leider ist die Antwort a) falsch ;(

So kann ich dir nicht wirklich weiterhelfen. Du müsstest die Aufgabe schon etwas genauer widergeben.

Geht es nur um normalisierte Zahlen? Oder sollen, wie Leange anmerkte, -0 und +0 als die selben Zahlen betrachtet werden? Also nocheinmal die verschiedenen Arten von Zahlen des IEEE 754:



2 Null // 2 [Vorzeichen] * 1 [Exponent = 0] * 1 [Mantisse = 0] = 2

2 Inf // 2 [Vorzeichen] * 1 [Exponent = 0xFF] * 1 [Mantisse = 0] = 2

16.777.214 NaNs // (2 [Vorzeichen] * 1 [Exponent = 0xFF] * 2²³ [Mantisse] ) - 2 [Mantisse != 0] = 16777214

16.777.214 denormalisierte Zahlen // (2 [Vorzeichen] * 1 [Exponent = 0] * 2²³ [Mantisse]) - 2 [Mantisse != 0] = 16777214

4.261.412.864 normale Zahlen // 2 [Vorzeichen] * (2⁸ [Exponent] - 2 [Exponent != 0 && Exponent != 0xFF]) * 2²³ [Mantisse] = 4261412864


In den eckigen Klammern ist jeweil die Beschreibung. So komme ich auf die Antwort die ich gegeben habe:


Nullen denorm. Z. norm. Zahlen

2 + 16777214 + 4261412864 = 4278190080

--

Was tatsächlich falsch ist war meine Aussage von oben:


Die Genauigkeit der darstellbaren Zahlen ist dort allerdings höher.

Richtig ist: Das IEEE 754 Format hat eine größere Reichweite, da die Abstände zwischen den einzelnen Zahlen nicht konstant sind (das gleitende Komma).

Als tradeoff muss man dann allerdings, wenn eine Zahl nicht im IEEE 754 Format darstellbar ist, runden und verliert damit Genauigkeit.

Das ist auch der Grund warum es das Format mit einfacher und mit doppelter Genauigkeit gibt.


Zur b) die ist natürlich richtig, hätte man auch selbst drauf kommen können ;)

;)

BlackSpike666
18.05.2017, 19:53
Hört sich für mich auch schlüssig an, aber leider ist die Antwort a) falsch ;(

Erstmal sorry für diese inkompetente Antwort, hätte mich natürlich genauer Ausdrücken und sie nicht als falsch bezichtigen, sondern die Antwort genauer ausführen müssen.




Geht es nur um normalisierte Zahlen? Oder sollen, wie Leange anmerkte, -0 und +0 als die selben Zahlen betrachtet werden?


Genau mein Prof. wollte die Antwort, in der die 0 genau einmal gezählt wird.
Da ich mich mit dem Thema eher oberflächlich beschäftigt habe, noch kurz eine Frage, bei der "einfachen Genauigkeit" im IEEE 754, gibt es doch die +0 & -0? Hätte dann die Frage vom Prof nicht genauer Formuliert und explizit die 0 als eine Zahl definieren müssen? :rolleyes:

s3rb31
18.05.2017, 20:43
Da ich mich mit dem Thema eher oberflächlich beschäftigt habe, noch kurz eine Frage, bei der "einfachen Genauigkeit" im IEEE 754, gibt es doch die +0 & -0? Hätte dann die Frage vom Prof nicht genauer Formuliert und explizit die 0 als eine Zahl definieren müssen? :rolleyes:

Also die +0 und die -0 gibt es aufgrund des Vorzeichenbits. Denn die Null kann wie folgt dargestellt werden:


-0: 1 00000000 00000000000000000000000


+0: 0 00000000 00000000000000000000000

Siehe: https://www.h-schmidt.net/FloatConverter/IEEE754de.html

Das hat also nichts mit der einfachen Genauigkeit zu tun.

Ich denke euer Prof. wird in der Vorlesung gesagt haben wie ihr die Null betrachtet, wenn das eine Rolle spielen sollte. Ansonsten gehe ich mal davon aus dass das in der Aufgabenstellung erwähnt wurde.

Man kann sich aber sicher darüber streiten ob die Formulierung die du im ersten Post benutzt hast nicht bereits ausreicht. Denn wenngleich +0 und -0 verschiedene Zustände im IEEE 754 Format darstellen, repräsentieren diese Zustände nichtsdestotrotz die selbe Zahl (im mathematischen Sinn).

Also wenn die Aufgabe als falsch gewertet wurde: mach dir nichts drauß. Immerhin weißt du jetzt bescheid :)