IEEE 754 Format < Technische Inform. < Praktische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 17:42 Di 22.03.2005 | Autor: | joke |
Hallo liebe Foren Gemeinde,
Bin am verzweifeln, probiere gerade für mein Spezialgebiet in Mathe eine Zahl ins IEEE Format umzuwandeln - allerdings komme ich damit nicht ganz klar
ich benutze folgende Formel:
$z = v * m * [mm] 2^e$
[/mm]
$ e = [mm] \log (2^z) [/mm] $ ... e = Exponent; z = umzuwandelnde Zahl
$m = [mm] (\bruch{x}{2^{e}}1) [/mm] * [mm] 2^{23}$
[/mm]
in meiner Berechnung komme ich dann auf folgendes Ergebnis:
Vorzeichen ist positiv daher v = 0
e = 4,58 = 5 + 127 = 132 --> 10000100$_2$
habe hier den Exponenten mit der Formel berechnet und den Bias dazugezählt (also 127) und die Zahl dann in eine Binärzahl umgewandelt
das Problem kommt jetzt bei der Matrisse:
$m = [mm] (\bruch{15,32}{2^{5}}-1) [/mm] * [mm] 2^{23} [/mm] = -4372561,92$
erstens bekomme ich eine Kommazahl, zweitens eine negative Zahl, kann das stimmen ? wenn ja wie wandle ich diese Kommazahl ins Binärsystem um ?
Ich hoffe wirklich jemand kann mir helfen, auch wenn die Frage nicht so alltäglich ist
über eine bessere Variante der Umwandlung freue ich mich natürlich auch, vielleicht ist auch ein Fehler in der Exponentenformel, bin mir da nicht ganz sicher
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 16:26 Mi 23.03.2005 | Autor: | Paulus |
Lieber joke
ich denke, du solltest dein Spezialgebiet zuerst einmal etwas repetieren!
Als Erstest solltest du deine Zahl in die binäre Darstellung umsetzen:
[mm] $15,32_{10}=1111,\overline{01010001111010111000}_2$
[/mm]
Sodann normierst du das. (Vor dem Komma darf nur eine einzige Ziffer stehe, also die 1):
[mm] $1111,\overline{01010001111010111000}=1,111\overline{01010001111010111000}_2*2^3$
[/mm]
Dezimal, wenn du das unbedingt haben willst, wäre das dann: 1,915 * 8
Für die Darstellung vergisst du einfach die 1 vor dem Komma, um die "Mantisse" zu erhalten. Bei 23 Stellen schneidest du einfach ab (hier deckt sich das zufälligerweise gerade mit dem Ende der Periode):
m = 11101010001111010111000
e = [mm] 3+127=10000010_2
[/mm]
v = 0
Da die Darstellung aus v,e,m, in dieser Reihenfolge besteht, ergibt sich folgendes Bit-Muster:
01000001011101010001111010111000
Oder hexadezimal: 41751EB8
Mit lieben Grüssen
Paul
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 17:14 Mi 23.03.2005 | Autor: | joke |
Hallo Paulus,
vielen Dank für die Antwort, dann war meine Version wohl etwas falsch ;) habe die Formeln von Wikipedia benutzt, aber die sind dann wohl nicht ganz richtig oder ich habe es falsch angewendet
so ist es sowieso leichter, werde mir dann das alles nochmal genau durchschauen und wenn später noch Fragen sind diese nochmals hier stellen
Vielen Dank für die Mühe, ist nicht selbstverständlich für "lau" zu helfen
Joke
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 17:31 Mi 23.03.2005 | Autor: | joke |
Ich habe doch noch eine Frage, hoffe sie ist jetzt nicht zu blöd
wie kommst du auf
01010001111010111000
? also den Wert hinter dem Komma ?
klingt jetzt vielleicht blöd, da es ja mein Spezialgebiet ist, aber das habe ich so nicht drin, also das direkte umwandeln einer Dezimalzahl ins Binärformat, habe Gleitkommazahlen leider nur theoretisch beschrieben
wäre wirklich nett wenn du mir das noch erklären könntest
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 14:42 Do 24.03.2005 | Autor: | Paulus |
Hallo joke
>
> wie kommst du auf
>
> 01010001111010111000
>
> ? also den Wert hinter dem Komma ?
>
> klingt jetzt vielleicht blöd, da es ja mein Spezialgebiet
Genau darum pflege ich zu schmunzeln, wenn jemand von seinem Spezialgebiet spricht! Das kommt öfter vor, als du denkst. Jemand redet von seinem Spezialgebiet, und bei genauerem hinsehen merkt man... Na ja, Schwamm drüber. Darum darf man ja Fragen stellen!
> ist, aber das habe ich so nicht drin, also das direkte
> umwandeln einer Dezimalzahl ins Binärformat, habe
> Gleitkommazahlen leider nur theoretisch beschrieben
>
> wäre wirklich nett wenn du mir das noch erklären könntest
>
Ich denke, du solltest diesen Strang einmal aufmerksam durchgehen:
https://matheraum.de/read?i=49866
Mit lieben Grüssen
Paul
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:00 Do 24.03.2005 | Autor: | joke |
Hallo Paulus ;)
Danke erstmal für die Antwort, werde mir den Strang mal genauer durchlesen !!! wenn ichs dann immer noch nicht verstehe melde ich mich nochmal
Der Begriff "Spezialgebiet" ist wirklich etwas unglücklich gewählt, aber was solls, man kann ja nicht alles wissen ...
Prüfung ist ja erst in 4 Monaten bis dann kann ich das hoffentlich
Liebe Grüße Joke
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 16:34 Do 24.03.2005 | Autor: | joke |
Jetzt hab ich das mal probiert, aber bei fast allen Zahlen drehe ich mich da nur im Kreis
zB. 0,24
0,24 * 2 = 0,48 0,76 * 2 = 1,52 0,24 * 2 = 0,48
0,48 * 2 = 0,96 0,52 * 2 = 1,04 0,48 * 2 = 0,96
0,96 * 2 = 1,92 0,04 * 2 = 0,08 0,96 * 2 = 1,92
0,92 * 2 = 1,84 0,08 * 2 = 0,16 0,92 * 2 = .....
0,84 * 2 = 1,68 0,16 * 2 = 0,32
0,68 * 2 = 1,36 0,32 * 2 = 0,64
0,36 * 2 = 0,72 0,64 * 2 = 1,28
0,72 * 2 = 1,44 0,28 * 2 = 0,56
0,44 * 2 = 0,88 0,56 * 2 = 1,12
0,88 * 2 = 1,76 0,12 * 2 = 0,24
Soll ich das dann hinschreiben ? oder gibt es da eine bessere Methode ?
blicke jetzt zwar durch wie es geht aber funktioniert halt noch nicht so ganz
Liebe Grüße Joke
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 12:03 Fr 25.03.2005 | Autor: | Paulus |
Hallo Joke
> Jetzt hab ich das mal probiert, aber bei fast allen Zahlen
> drehe ich mich da nur im Kreis
>
Warum denn so pessimistisch? Du hast das doch super gelöst!
Es muss ja so sein, dass du dich "im Kreis drehst", wenn du eine rationale Zahl in eine "Kommazahl" umwandelst! Rationale Zahlen führen immer zu periodischen Darstellungen!
In deinem Beispiel wiederholen sich die Kommastellen nach 20 Stellen einfach wieder!
> zB. 0,24
>
> 0,24 * 2 = 0,48 0,76 * 2 = 1,52 0,24 * 2 =
> 0,48
> 0,48 * 2 = 0,96 0,52 * 2 = 1,04 0,48 * 2 =
> 0,96
> 0,96 * 2 = 1,92 0,04 * 2 = 0,08 0,96 * 2 =
> 1,92
> 0,92 * 2 = 1,84 0,08 * 2 = 0,16 0,92 * 2 =
> .....
> 0,84 * 2 = 1,68 0,16 * 2 = 0,32
> 0,68 * 2 = 1,36 0,32 * 2 = 0,64
> 0,36 * 2 = 0,72 0,64 * 2 = 1,28
> 0,72 * 2 = 1,44 0,28 * 2 = 0,56
> 0,44 * 2 = 0,88 0,56 * 2 = 1,12
> 0,88 * 2 = 1,76 0,12 * 2 = 0,24
>
>
> Soll ich das dann hinschreiben ? oder gibt es da eine
> bessere Methode ?
>
Ja, jetzt brauchst du nur die Ziffern hinzuschreiben, die jeweils vor dem Komma auftauchen und schauen, wo sich das zu wiederholen beginnt. Hier nach 20 Stellen. Also:
[mm] $0,24_{10}=0,\overline{00111101011100001010}_2$
[/mm]
Du darfst das ruhig nachrechnen. Die 1. Stelle nach dem Komma bedeutet ja Halbe, die 2. Stelle Viertel, dann Achtel, Sechzehntel, etc.
Fortlaufen addiert gibt das dann (isch lasse die Kommastellen mit Wert 0 aus:
0,125
0,1875
0,21875
0,234375
0,23828125
0,2392578125
0,23974609375
0,239990234375
und so weiter.
Das scheint sich doch wirklich dem Wert 0,24 zu nähern. Ist im Binärsystem halt eine unendliche "Kommadarstellung".
Mit lieben Grüssen
Paul
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:12 Fr 25.03.2005 | Autor: | joke |
Alles klar,
jetzt hab ichs begriffen :) , werde das dann noch in meinem Spezialgebiet ergänzen
vielen Dank für die Hilfe
Liebe Grüße Joke
|
|
|
|