PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] IEEE 754 Floating Point



Kampi
18.03.2013, 10:39
Heyho,

ich habe mal eine Frage zur Erstellung einer Gleitpunktzahl nach der IEEE 754:

http://de.wikipedia.org/wiki/Gleitkommazahl

Und zwar geht es um die Berechnung, genauer gesagt Punkt 5 (Vorzeichen bestimmen).
Bei Wikipedia steht:

(-1)^s

Woher kommt das "s", bzw. wofür steht das?
Ich habe in dem Artikel nichts zu gefunden / überlesen (was ich nicht hoffe ;) ).
Und der Exess, sprich die 8-Bit Konstante, ist diese für alle Gleitpunktzahlen nach IEEE 754 gleich? Dem Artikel würde ich entnehmen das es so ist.
Ist nur eine kleine Frage.....in den Informatikvorlesung hat uns der Prof gefragt ob wir das erklärt haben wollen oder lieber als gegeben vorausgesetzt haben möchten (soll wohl sehr trocken sein). Aber ich würde zumindest im groben Wissen wie man eine Gleitkommazahl bildet.
Danke für eine Antwort :)

oberallgeier
18.03.2013, 12:04
...
Bei Wikipedia steht:

(-1)^s

Woher kommt das "s", bzw. wofür steht das? ...Hei - müsstest Du irgendwann in HM hören oder gehört haben. Das "s" kommt sicherlich von der "Signumfunktion" (klick) (http://de.wikipedia.org/wiki/Signumfunktion) - der alte Bezug zur humanistischen (Aus- oder Ein-) Bildung.

Kampi
18.03.2013, 12:08
Ahh gut dank dir :)
Das macht die Sache schon klarer. Mich hat dieses "s" nur verwirrt.....hätte man auch einfacher schreiben können ;)

oberallgeier
18.03.2013, 12:11
... Und der Exess, sprich die 8-Bit Konstante ...Exess??? Nie gehört. Exzess - aber das ist sicher ein anderes Tier . . . Meinst Du den Exponenten? Nun kenne ich mich in der genannten IEEE nicht wirklich aus, bin auch zu faul die hervorzukramen UND zu lesen. Mal so - wenn Du erst viele Bytes fürs Gleitkomma hast, wird die Feinheit der Realzahlen natürlich umso besser, je breiter die Darstellung des Exponenten ist bzw. sein KANN. Der darf ja auch mal zwei Bytes breit sein - oder noch mehr.

... hätte man auch einfacher schreiben können ...Schon - aber dann verstehen es ja auch "andere". Und viele Mathematiker versuchen sich (nur und ausschließlich) den eigenen Fachleuten verständlich zu machen. Damit die Wahrheit gepflegt wird, dass Mathematik eine höhere Wissenschaft ist.

Kampi
18.03.2013, 12:35
Ja mit Exzess meine ich den Punkt 1 und das ist wohl die Ausgangsbasis für den dualen Exponenten (Punkt 4).
Das du die nicht lesen willst kann ich verstehen ;)....sowas zu lesen ist....naja.....
Und das Thema Mathematiker....ich erinnere mich an meine Matheskripte....die sind auch nicht wirklich so geschrieben das ein 0815 Dödel wie ich die versteht ^.^

markusj
18.03.2013, 12:51
Das s ist das Vorzeichen-Bit (Sign).
Und die Motivation für den Exzess wird ja im Artikel erläutert. Der Exponent kann sowohl positiv als auch negativ sein, um damit einfach arbeiten addiert man den Exzess oder auch Bias-Wert auf diese Zahl, das Ergebnis ist dann eine einfache positive Zahl zur Basis 2. Dieser Bias ist der Betrag des kleinsten zulässigen Exponenten + 1, die dadurch frei bleibende Null wird für andere Zwecke genutzt.

mfG
Markus

oberallgeier
18.03.2013, 13:07
... Und der Exess, sprich die 8-Bit Konstante, ist diese für alle Gleitpunktzahlen nach IEEE 754 gleich ...Mal der Versuch es einfach darzustellen. Der Bias/Exzess ist ein Offset auf den Exponenten. Um eine separate Vorzeichenkonvention beim Exponenten zu umgehen wird der tatsächliche - binäre - Exponent aufgestockt. Beim Decodieren der Binärzahl zu einer Dezimalzahl wird dieser Offset wieder abgezogen, bevor der Exponent wirklich berechnet wird.

Daraus ist klar, dass dieser Offset von der Bitlänge des Exponenten abhängt.
8 Bit hier (http://de.wikipedia.org/wiki/Gleitkommazahl#Berechnung_einer_IEEE_double_precis ion_Gleitkommazahl_.2864-Bit-Gleitkommazahl.29) - für 32-Bit-Gleitkommazahl
11 Bit hier (http://de.wikipedia.org/wiki/Gleitkommazahl#Berechnung_einer_IEEE_double_precis ion_Gleitkommazahl_.2864-Bit-Gleitkommazahl.29) - für 64-Bit-Gleitkommazahl

Ist das jetzt verständlicher ??

Kampi
18.03.2013, 13:08
Dank dir für die Erklärung :)
Ich nehme mal an das v, sprich das Vorzeichen ist dann ein Multiplikator mit 1 bzw. -1. Weil S = 0 ist ja dann (-1)^0 = 1 und 1 x Zahl = Zahl.
Wenn ich nun was negatives habe, dann ist v = (-1)^1 = -1 und (-1) x Zahl = -Zahl.
Sehe ich das so richtig?

Kampi
18.03.2013, 21:20
Ok ich habe nun ein paar Rechnungen nach dem Schema gemacht und das Prinzip sitzt. Danke euch für die Hilfe :)

ichbinsisyphos
18.03.2013, 21:41
Mal der Versuch es einfach darzustellen. Der Bias/Exzess ist ein Offset auf den Exponenten. Um eine separate Vorzeichenkonvention beim Exponenten zu umgehen wird der tatsächliche - binäre - Exponent aufgestockt. Beim Decodieren der Binärzahl zu einer Dezimalzahl wird dieser Offset wieder abgezogen, bevor der Exponent wirklich berechnet wird.Unterscheidet sich das durch irgendwas von einer vorzeichenbehafteten Ganzzahl? Da ist ja auch die "untere Hälfte" negativ, die obere positiv.

oberallgeier
18.03.2013, 22:14
Unterscheidet sich das ... von einer vorzeichenbehafteten Ganzzahl ...Ja. Die vorzeichenbehaftete Ganzzahl wird in Computern üblicherweise als Zweierkomplement dargestellt. Der oben skizzierte Bias (engl. für z.B. Vorspannung oder z.B. aus der Elektronik: Größe die dem eigentlichen Nutzsignal überlagert wird) ist aber eher ein simpler Offset.

Addiere doch mal auf ne 8bittige Ganzzahl mit Wert 127dez eins drauf.

127dez = 0b0111 1111
+ 0b1
. . .

Eben! das ist -128. Klingt alles ein bisschen theoretisch-spitzfindig - eben - Mathe.

Es gibt aber auch (selten?) binäre Darstellungen von floating point mit Exponenten als Zweierkomplement.

ichbinsisyphos
18.03.2013, 22:35
Aso, da hatte ich dann eine falsche Vorstellung von signed integern.

markusj
19.03.2013, 00:29
Bei vorzeichenbehafteten Integern sind die negativen Zahlen in der oberen Hälfte des Wertebereiches angesiedelt, starten beim Maximalwert und werden dann immer kleiner. Die Bias-Kodierung von 754er-Floats behält die natürliche Ordnung bei:

int8_t vs. uint8_t
127 = 0x7F = 127
0 = 0x00 = 0
-1 = 0xFF = 255
-128 = 0x80 = 128

single precision biased vs. uint_8_t
127 = 0xFE = 254
0 = 0x7F = 127
-1 = 0x7E = 126
-126 = 0x01 = 1

Alle Klarheiten beseitigt?

mfG
Markus

oberallgeier
19.03.2013, 07:40
... Die Bias-Kodierung von 754er-Floats ... Alle Klarheiten beseitigt ...Fast alle Klarheiten - ja. Und schön erklärt. Meine eigenen Erklärungen finde ich oft klar für mich, aber eher unklar für die Zielgruppe :-/