Maschinenzahlen! < Technische Inform. < Praktische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 08:37 Do 13.05.2004 | Autor: | Julchen |
Hallo! Neue Aufgaben, neue Probleme. Ich bräuchte mal wieder bitte Euere Hilfe bei folgender Aufgabe:
Bei einer bekannten Rechnerarithmetik (IEEE single precision) werden die normalisierten Maschinenzahlen durch das Bitmuster v e m dargestellt, wobei auf v 1 Bit, auf e 8 Bit und auf m 23 Bit fallen. Interpretiert man v, e und m als Dualzahlen, eventuell mit führenden Nullen, so lässt sich die dargestellte Zahl über die Formel [mm] (-1)^v [/mm] * 2^(e-127)* (1+ m/2^23) berechnen (^bedeutet "hoch", nach ^steht der Exponent). e unterliegt dabei der zusätzlichen Einschränklung
0<e<255. Berechnen Sie die kleinste und die größte positive normalisierte Maschinenzahl und geben Sie die zugehörigen Bitmuster in hexadezimaler Schreibweise an. Wieviele Dezimalstellen werden mindestens benötigt, damit bei der Darstellung durch normalisierte Gleitpunktzahlen zur Basis 10 mindestens gleich große relative Genauigkeit erzielt wird??
Kann mir da jmd. helfen?? Ich versteh nämlich nur Bahnhof!
Julchen
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 01:33 Fr 14.05.2004 | Autor: | Paulus |
Hallo Julchen
ich versuch mal einen Teil zu erklären, für den Rest brauch ich dann aber von dir noch eine kleine Information! (Könnte ich sicher auch im Internet suchen, aber direkt fragen ist halt bequemer, und da es jetzt sowieso schon relativ spät ist...)
> Hallo! Neue Aufgaben, neue Probleme. Ich bräuchte mal
> wieder bitte Euere Hilfe bei folgender Aufgabe:
> Bei einer bekannten Rechnerarithmetik (IEEE single
> precision) werden die normalisierten Maschinenzahlen durch
> das Bitmuster v e m dargestellt, wobei auf v 1 Bit, auf e 8
> Bit und auf m 23 Bit fallen. Interpretiert man v, e und m
> als Dualzahlen, eventuell mit führenden Nullen, so lässt
> sich die dargestellte Zahl über die Formel [mm] (-1)^v [/mm] *
> 2^(e-127)* (1+ m/2^23) berechnen (^bedeutet "hoch", nach
> ^steht der Exponent). e unterliegt dabei der zusätzlichen
> Einschränklung
> 0<e<255. Berechnen Sie die kleinste und die größte positive
> normalisierte Maschinenzahl und geben Sie die zugehörigen
> Bitmuster in hexadezimaler Schreibweise an.
Du hast also 32 Bits zur Verfügung. Das Bit ganz links ist das Vorzeichenbit (1 bedeutet: Zahl ist negativ, 0 bedeutet: Zahl ist positiv)
Darauf folgen 8 Bits für das zurechtrücken des Dezimalpunktes, wobei die Werte 0 und 255 für Anderes (Spezialzeichen) reserviert sind (Exponent zur Basis 2)
Und dann noch 23 Bits für die Mantisse, das effektive Zahlenmuster.
Also etwa so:
veeeeeeeemmmmmmmmmmmmmmmmmmmmmmm
(Wobei an jeder Stelle 0 oder 1 stehen kann)
Zwischenfrage: du weisst aber schon, wie man ein binäres Bitmuster in die hexadezimale Darstellung überführt?
(Vierergruppen machen und die einzelnen Gruppen umsetzen, also z.B.
Bitmuster:
10110101101110111111011111011011
-->
1011 0101 1011 1011 1111 0111 1101 1011 --> B5BBF7DB )
Da gefordert ist, dass unsere dargestellten Zahlen positiv sein sollen, ist das Vorzeichenbit immer 0 zu wählen!
Da als 1. Teilaufgabe die Zahl maximal werden muss, muss natürlich der Exponent (der e-Teil) den grösstmöglichen Wert annehmen:
254, oder Binär: 11111110
... und die Mantisse muss auch maximal sein, also mit lauter 1 gefüllt sein:
11111111111111111111111
Setz man diese drei Teile Zusammen (v-Bit, e-Teil und Mantisse) so ergibt sich für den Maximalen Wert also das folgende Bitmuster:
01111111011111111111111111111111
Und das jetzt hexadezimal dargestellt:
0111 1111 0111 1111 1111 1111 1111 1111
--> 7F7FFFFF
Wird üblicherweise so gruppiert: 7F 7F FF FF
Das ist also die hexadezimale Darstellung der grössten darstellbaren Zahl als normierte Maschinenzahl.
----------------- Kleiner Einschub zum Verständnis --------------
man kann sich die dargestellte Zahl vorstellen als 1.mmmmmmmmmmm,
wobei die mmmmmmmm die einzelnen Bits der Mantisse bedeuten. Und da wird dann noch der Dezimalpunkt um den Wert des Exponenten nach rechts (oder links) geschoben, jenachdem, ob der Exponent grösser oder kleiner als 127 ist.
Als Beispiel: Der Exponent habe den Wert 131. Für das Kommaschieben wird aber 131 - 127 gerechnet (schau dir das mal in binärer Darstellung an!) Die Mantisse habe das Bitmuster 10110010000000000000000
Dann ist der Wert zunächst mal: [mm]1[/mm].10110010000000000000000
.. und dann wird noch die Kommastelle nach rechts geschoben (um 4 Stellen) Dies ergibt für den dargestellten Wert: 11011.001 (binär), was dezimal dem Wert 27.125 entspricht.
---------- Ende Kleiner Einschub zum Verständnis: ---------------
Wie gross ist jetzt unsere maximale Zahl?
Dazu haben wir ja die Formel:
[mm]2^{(e-127)} * (1+ m/2^{23})[/mm]
[mm]e=254[/mm]; [mm]m=2^{23}-1[/mm] (23 aufeinanderfolgende Bits mit Wert 1)
Also:
[mm]2^{127} * (1+ \bruch{2^{23}-1}{2^{23}} =
2^{127} * (1+ 1 - 2^{-23}) =
2^{128} - 2^{104} = 2^{104} * (2^{24}-1)[/mm]
Das müsste man als Binärzahl so speichen: 24 mal die 1, gefolgt von 104 Nullen! (klar?)
Jetzt hoffe ich, dass du in ähnlicher Manier dich mal vom Bahnhof abhebst und den kleinsten positiven Wert eruieren kannst.
Versuchst du das mal, bitte?
(Kleiner Tip: e = 1, m = 0)
> Wieviele
> Dezimalstellen werden mindestens benötigt, damit bei der
> Darstellung durch normalisierte Gleitpunktzahlen zur Basis
> 10 mindestens gleich große relative Genauigkeit erzielt
> wird??
... Und da brauche ich von dir noch die kleine Unterstützung: Wie sehen denn die normalisierte Gleitpunktzahlen (im Gegensatz zu den normalisierten Maschinenzahlen) aus? Fahren da auch Züge ein und aus?
Liebe Grüsse
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 08:03 Fr 14.05.2004 | Autor: | Julchen |
Hallo!
Vielen Dank! Ich werd das mit der kleinsten Zahl auf jeden Fall versuchen. Über Gleitpunktzahlen haben wir in der Vorlesung nichts aufgeschrieben.Hab gerade extra nochmal ganz genau nachgeschaut. Tut mir leid!
Nochmal vielen Dank für deine Mühe!!
Julchen
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 12:52 Fr 14.05.2004 | Autor: | Paulus |
Hallo Julchen
wie stehts mit der kleinsten positiven Zahl? Bist du ein Wenig weiter gekommen?
Ich glaube inzwischen, dass die Begriffe "Normalisierte Maschinenzahl" und "Normalisierte Gleitpunktzahl" ein und dasselbe bedeuten!
Deine 2. Frage wird, glaube ich, hier, gleich am Anfang des Textes, beantwortet.
http://www.3dcenter.de/artikel/fp_format/index8.php
Wenn du damit Schwierigkeiten hast, dann melde dich einfach wieder. Ich kann ja dann versuchen, das Ganze mit eigenen Worten noch etwas zu erläutern.
Mit lieben Grüssen und den besten Wünschen für ein erfolgreiches Studium
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 19:07 Fr 14.05.2004 | Autor: | Julchen |
Hallo nochmal!
Danke dür die Mühe,die du dir wegen mir machst. Mit der kleinsten positiven Zahl bin ich noch zu keinem Ergebnis gekommen. Ich hätte noch eine Bitte: Könnest du mir den Link, der meine zweite Frage beantworten soll, vielleicht kurz mit eigenen Worten erklären?? Wäre wirklich nett,denn dann ist es besser für mich verständlich.
Ein schönes Wochenende!
Julchen
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 09:55 Sa 15.05.2004 | Autor: | Julchen |
Hallo nochmal!
Hab's jetzt versucht:
kleinste Zahl: Exponent: 00000001
Mantisse: 23 Nullen
hexadezimal: 00800000
ausgerechnet: 2^-125
2. Frage: mind. 7 Dezimalstellen
Könnte das stimmen??
Julchen
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:42 Sa 15.05.2004 | Autor: | Paulus |
Hallo Julchen-Susi
Jetzt bin ich wieder zurück!
Nachdem ich einfach mal in der Formel eingesetzt habe, welche im Link einer meiner obigen Antworten gegeben ist (http://www.3dcenter.de/artikel/fp_format/index8.php,
habe auch ich für die relevanten Dezimalstellen einen Wert von 7,2 erhalten!
Übrigens noch interessant, wie sich die Prozessor-Entwicklung auch auf die Genauigkeit der dargestellten Zahlen auswirkt:
Bei einer Mantisse von 10 Bits (war offenbar bei 16-Bit-Prozessoren üblich) war die Genauigkeit lediglich bei 3,3 relevanten Dezimalstellen.
Bei einer Mantisse von 16 Bits stieg es dann schon auf 5,1 relevante Dezimalstellen, und heute ist schon bei 7,2 (falls wir uns nicht verrechnet haben ).
Es wäre sicher auch interessant zu berechnen, wie es bei den 64-Bit-Prozessoren ist. (Ich kenne dazu aber nicht die Grösse der Mantisse)
Viele liebe Grüsse
P.S. Sollte etwas in unseren Überlegungen falsch sein, dann teilst du mir das bitte bei Gelegenheit mit? (So kann auch ich etwas lernen, da ja, wie man leicht erkennt, Informatik nicht mein Spezialgebiet ist; habe mich nur gemeldet, weil es sonst niemand tat!)
|
|
|
|