Hallo Leute, knacke heute erneut an so einer Aufgabe und mir fehlt der Kniff. Geht ums Gleitkommaformat. Ich soll mit Hilfe einer Gegebenen Basis, Mantisse-Stellen, Exponent-Stellen die kleinste und größte darstellbare Zahl finden. z. B. Basis: 2, Matnisse: 9-Stellen, Exponent 4 Stellen. Ich weiß das man generell einen Wert so ermitteln kann. Mantisse * Basis^exponent Unser Prof. hat mal in der Vorlesung ein Beispiel gegeben dazu. kleinster Exponent: 1000 = -8 (verstehe ich) Kleinster Mantissen Wert: 100000000 (klar, bei 9 Stellen). Und dann hat er einfach gesagt: Randbedingung: 1/2 <= m < 1 => 1/2 * 2^-8 * 2^-9 ist demnach die kleinste darstellbare Zahl. Ok . Mir ist schon irgendwie klar, dass 1/2 jetzt die Matnisse ist, dann wird einfach mit negativen Exponenten und der negativen Stellenzahl der Mantisse mulitpliziert. Aber ist das auch so ? Was ist denn die größte darstellbare Zahl? Eigentlich kenne ich nur die Randbedingung: 1 <= m < 2 ! Dann müsste ich ja einen Wert nehmen, der so nah wie möglich an der 2 ist, aber kleiner bleibt... Aber das scheint mir irgendwie ... schwer. Oder wäre die größte positive darstellbare Zahl in dem Fall einfach 1 * 2^7 * 2^9 (9 Stellen, 7 als Exponent weil 0111) ? Ich bedanke mich vielmals :) !
Kukuku schrieb: > Kleinster Mantissen Wert: 100000000 (klar, bei 9 Stellen). Wenn denormalisierte Mantissen zulässig sind, dann 000000001. > Dann müsste ich ja einen Wert nehmen, der > so nah wie möglich an der 2 ist 111111111 ist so dicht dran an 2, wie die Mantisse zulässt.
:
Bearbeitet durch User
Ausserdem solltest du dich mit dir einig werden, ob deine Mantisse nun [0.5,1) umfasst, oder [1,2). Geht beides, aber entweder oder.
Hallo, erstmal Danke für deine Antworten. Ganz ehrlich, ich weiß es auch nicht. In diesem Aufgabentypus steht z. B. einfach: In dieser Aufgabe geht es um die binäre Gleitkommadarstellung mit 9-stelliger Mantnisse und 4 stelligen Exponent. 1) Was ist die kleinste positive darstellbare Zahl? 2) Was ist die größe positive darstellbare Zahl? für 1) hat in der Vorlesung einfach oben genannte Rechnung angegeben und gemeint, für Fall 2) müsste man die mantnisse und den Exponenten nur möglichst groß wählen. Daher hätte ich jetzt geschlossen statt 1/2 * 2^-8 * 2^-9 für die kleinste positive darstellbare Zahl dann einfach 1/2* 2^7 * 2^9 ? Das Problem, ist dass wir diese Rechnungen auch noch in Technische Grundlagen haben und in einem anderen Fach, und jeder Prof. macht das irgendwie ein bisschen anders, so dass ich das Große Ganze nicht auf die Kette kriege.
Kukuku schrieb: > kleinste positive darstellbare Zahl dann einfach 1/2* 2^7 * 2^9 Was immer das auch ist, es ist weder die kleinste positive darstellbare Zahl noch die grösste. Raten ist zwar auch ein Ansatz, aber ob das zum Erfolg führt? Insbesondere wenn dann jemand die peinliche Frage stellt, wie du dazu kommst. Kannst es ja mal im ersten Denkansatz dezimal probieren. Also was rauskommt, wenn ein Zahlenformat #,######## * 10^+/-#### zur Verfügung steht. > Das Problem, ist dass wir diese Rechnungen auch noch in Technische > Grundlagen haben und in einem anderen Fach, und jeder Prof. macht das > irgendwie ein bisschen anders, so dass ich das Große Ganze nicht auf die > Kette kriege. Pfiffig die Leutchens. Das bedeutet nämlich, dass man es verstehen muss. Nicht bloss nachplappern oder Werte in Formeln einsetzen. ;-) Nur so nebenbei: Haben deine Zahlen auch ein Vorzeichen?
:
Bearbeitet durch User
A. K. schrieb: > Pfiffig die Leutchens. Das bedeutet nämlich, dass man es verstehen muss. > Nicht bloss nachplappern oder Werte in Formeln einsetzen. ;-) Ja, nur hilft mir das nichts wenn das nur anskizziert ist im Script und ich die Aufgaben nicht rechnen kann, weil ich auch keinen Vergleich habe, was richtig ist. So hilft mir das natürlich nichts. Naja, lern ich halt auf Lücke - auch egal. Hab mich da heute schon den ganzen Tag mit beschäftigt,macht keinen Sinn.
Was suchst du? Die fertige Lösung? Was bringt dir das? Einen Ansatz, sich dem zu nähern, habe ich aufgezeigt. Es ist deine Sache, was du draus machst.
Kukuku schrieb: > Ja, nur hilft mir das nichts wenn das nur anskizziert ist im Script und > ich die Aufgaben nicht rechnen kann, weil ich auch keinen Vergleich > habe, was richtig ist. Mit der Frage, ob deine Gedanken richtig sind, kommst du hier vielleicht schon weiter. Aber zumindest bei mir nicht mit der Frage nach dem fertigen Lösungsweg. Das ist kein Sadismus, sondern liegt daran, dass ich persönlich weit bessere Erfahrungen damit gemacht habe, Sachverhalte zu verstehen, als irgendwas auswendig zu lernen. Ich hatte übrigens oben mal auf Denormals hingewiesen. Ist dir klar was das ist? Ist in diesem Zusammenhang nicht ganz unwichtig. Wenn du auf Tipps absolut nicht eingehst - was erwartest du dann?
:
Bearbeitet durch User
Das Problem ist, ich würde es ja gerne verstehen. Und es wäre auch toll, wenn ich dazu im Skript auch mal eine richtige Erklärung finden würde. Aber ich finde immer nur diese angeschnittenen Beispielaufgaben, das macht mich irre. Also ok. Ich versuche es nochmal mit strenger Logik^^ Exponent 4 Stellen Mantnisse 9 Stellen Basis: 2 Ich suche die kleinste positive darstellbare Zahl. Also muss ich den Exponent und die Mantisse möglichst klein wählen. Kleinster Exponent = 1000 = -8 Aufgrund der Zweierkomplementdarstellung. Kleinste Mantisse 000000001 = 1 Da ich ja aber eine Kommezahl brauche hat meine Mantnisse den Wert 1 / 512 = 1 / 2^9 jetzt habe ich m = 1/2^9 exponent -8 basis 2 Nach der allgemeinen Formel basiert ja die Darstellung ja auf folgendem. z = m * b^e Das wäre dann in meinem Fall z = 1/2^9 * 2^-8 <=> 1 * 2^-9 * 2^-8 = 1 * 2^-17 Aber eigentlich ist ja meine Randbedingung 1/b <= m < 1 Also 1/2 <= m < 1 und demnach wäre meine Rechnung eigentlich 1/2 * 2^-17 - also 1/2 statt 1. Weil 1/2 eben der kleinste Wert wäre. Aber das ist der Punkt, der mich verwirrt. Ich habe zwar 1/2 als Randbedingung, aber 1/2 lässt sich Binär doch gar nicht darstellen ! Warum ist das dann so? War mein Ansatz und meine Überlegung richtig?
Und ja ich weiß das du auf Denormals hingewiesen hast. Entschuldige ! Wir müssen hier in Programmierung das nicht "normalisieren", wie wir das in Technische Grundlagen machen müssen.
Kukuku schrieb: > Kleinster Exponent = 1000 = -8 Aufgrund der > Zweierkomplementdarstellung. Passt. > Kleinste Mantisse 000000001 = 1 > Da ich ja aber eine Kommezahl brauche hat meine Mantnisse den Wert > 1 / 512 = 1 / 2^9 Passt auch, aber (A), siehe unten. > z = 1/2^9 * 2^-8 <=> 1 * 2^-9 * 2^-8 = 1 * 2^-17 Na also, geht doch. > Aber eigentlich ist ja meine Randbedingung 1/b <= m < 1 > Also 1/2 <= m < 1 und demnach wäre meine Rechnung eigentlich > > 1/2 * 2^-17 - also 1/2 statt 1. Weil 1/2 eben der kleinste Wert wäre. Und damit sind wir bei den Denormals. Wenn die Mantisse zwingend entweder 0 (gibts auch ;-), oder >= 0,5 ist, dann sind denormalisierte Mantissen nicht zulässig, aber (A) ist genau das. > Aber das ist der Punkt, der mich verwirrt. Ich habe zwar 1/2 als > Randbedingung, aber 1/2 lässt sich Binär doch gar nicht darstellen ! Aber klar doch. Bei einer Mantisse, die zwischen 0,5 (inkl) und 1 (ixkl) liegt, ist 100000000 (binär) exakt 0,5 (dezimal). Weil der Punkt links davon liegt, es also 0,100000000 ist.
Kukuku schrieb: > Und ja ich weiß das du auf Denormals hingewiesen hast. Entschuldige ! > Wir müssen hier in Programmierung das nicht "normalisieren", wie wir das > in Technische Grundlagen machen müssen. Keine Ahnung was du damit sagen willst. Der Witz ist nur, dass eine der Aussagen oben, die du deinem Prof zuschreibst, nur korrekt ist, wenn denormalisierte Mantissen zulässig sind (also 0,000000001). Und andererseits bei denormalisierten Mantissen die Forderung m >= 0,5 verletzt ist. Um diesem Dilemma zu entfliehen muss man wohl Letzteres eher als Hinweis denn als zwingende Forderung verstehen, also m < 0,5 zulassen. Oder zu einem anderen Ergebnis kommen als der Prof. Du hast die Wahl. ;-) Wenn die Mantisse entweder 0,000000000 oder 0,1xxxxxxxx sein darf, nie aber 0,0xxxxxxxx mit mindestens einem x != 0 (d.h. nur normalisierte Mantissen), dann kommt für die kleinste darstellbare Zahl != 0 ein anderes Ergebnis heraus, als wenn jede Mantisse zulässig ist. Daher also die beiden Möglichkeiten für die kleinste Zahl != 0: (a) denormalisiert: m=0,000000001 e=1000 (b) normalisiert: m=0,100000000 e=1000 Wirst dich für eine davon entscheiden müssen. Am anderen Ende, also der grössten Zahl ist es einfacher. Da gibts keine Denormals.
:
Bearbeitet durch User
Kukuku schrieb: > Aber das ist der Punkt, der mich verwirrt. Ich habe zwar 1/2 als > Randbedingung, aber 1/2 lässt sich Binär doch gar nicht darstellen ! Um das mal anders zu formulieren: Deine Mantisse ist eine Festkommazahl. 0 Vorkommastellen und 9 Nachkommastellen. Und grad so, wie 0,1 dezimal 1/10 ist, ist 0,1 binär 1/2. Was du wirklich nicht endlich binär darstellen kannst ist 1/10 (dezimal).
:
Bearbeitet durch User
Danke für die ausführlichen Antworten ! Das ist aber tatsächlich ein Dilemma. Wahrscheinlich hast du recht, und es ist nur so eine pi-mal Daumen Anweisung, die man dann wohl in seinem Fach so hinnehmen soll. Ich nehme es jetzt einfach mal hin, dass die Randbedingung 1/2 ist und ich beim kleinsten Wert dann auch von diesem ausgehe. Hoffe ich. Es steht ja leider nichts im Skript darüber. Das ist ja das Haare raufende. Danke übrigens. Ich versuche es jetzt mal mit dem größten Wert Exponent: 0111 = 7 Mantisse 011111111 = 255 , ich möchte das komma ja wieder verschieben. Da das auch immer so macht, wirds dann halt schon passen. Meine Mantisse wäre also 255/2^9 Nach der Formel z = m * b^e wäre es dann 255/2^9 * 2^7 = 255/2^2 = 255/4 = 63.75 63.75 wäre die größte positive Darstellbare Zahl. Ist das so? Das kommt mir irgendwie so... wenig vor ? Oder hab ich jetzt wieder einen Bock geschossen ?
A. K. schrieb: > NB: Was ist das eigentlich für ein Studium? Informatik mit schwerpunkt Technische Informatik (Automatisierungstechnik/ Softwareentwicklung). Bin aber auch erst im 1. Semester, vielleicht stell ich mich auch noch zu doof an x)
Kukuku schrieb: > Exponent: 0111 = 7 Korrekt. > Mantisse 011111111 = 255 Hossa... Jetzt wirds spannend und die Verwirrung offenkundig. Mantissen in Zweierkomplementdarstellung bin ich noch nie begegnet. Die werden eigentlich immer als sign/magnitude dargestellt - daher übrigens meine Frage nach dem Vorzeichen. Will hoffen, dass das hier auch so gemeint ist, sonst lösch (fast) alles was ich bisher geschrieben habe. Jedenfalls ist im üblichen Fall, also mit separatem Vorzeichen und vorzeichenloser Mantisse, die grösste Mantisse 111111111, also 0,111111111, also fast 1.
:
Bearbeitet durch User
A. K. schrieb: > und grad so, wie 0,1 dezimal 1/10 ist, ist 0,1 binär 1/2. Und warum kann der blöde Windows-Taschenrechner mit Zahlen wie 0,1 binär nicht umgehen, aber mit 0,1 dezimal, obwohl er sich zwischen Binär- und Dezimaldarstellung umschalten läßt.
Klar..sorry, die ist ja gar nicht im Zweierkomplement. Blödsinn von mir. also 511/2^9 * 2^7 dann = 511 * 2^-9 * 2^7 = 511 * 2^2 = 2044. Kommt mir immer noch klein vor ^^ aber sollte dann ja stimmen?
k.A. schrieb: > Und warum kann der blöde Windows-Taschenrechner mit Zahlen wie 0,1 binär > nicht umgehen, aber mit 0,1 dezimal, obwohl er sich zwischen Binär- und > Dezimaldarstellung umschalten läßt. Weil dein Taschenrechner binär offenbar nur ganzzahlig rechnet. Nur wirst du kaum das Unvermögen deines Taschenrechners als Beweis für eine postulierte Nichtexistenz binärer Kommazahlen heranziehen können. :-)
Wieder so ein bock. 511 * 2^-2 = 127.75. Jetzt aber - oder XD ?
Kukuku schrieb: > Kommt mir immer noch klein vor ^^ aber sollte dann ja stimmen? Passt schon. Bist du bei der kleinsten Zahl weiter gekommen? Bzw. den beiden Möglichkeiten. Dass dieser Bereich klein ist, liegt an dem kleinen Exponenten mit seinen 4 Bits. Im beliebte IEEE Format sinds ein paar Bits mehr.
Kukuku schrieb: > Wieder so ein bock. 511 * 2^-2 = 127.75. Jetzt aber - oder XD ? Vorher wars richtig. Du solltest wirklich dazu übergehen, die Mantisse als Kommazahl zu schreiben, statt als Ganzzahl. Sonst stolperst du permanent über die eigenen Füsse. Die Mantisse "111111111" ist tatsächlich die Kommazahl 0,111111111 (binär), was du oben korrekt als 511/2^9 beschrieben hast. Und entspricht damit der Forderung m < 1.
:
Bearbeitet durch User
A. K. schrieb: > Kukuku schrieb: >> Wieder so ein bock. 511 * 2^-2 = 127.75. Jetzt aber - oder XD ? > > Vorher wars richtig. Du solltest wirklich dazu übergehen, die Mantisse > als Kommazahl zu schreiben, statt als Ganzzahl. Sonst stolperst du > permanent über die eigenen Füsse. > > Die Mantisse "111111111" ist tatsächlich die Kommazahl 0,111111111 > (binär), was du oben korrekt als 511/2^9 beschrieben hast. Und > entspricht damit der Forderung m < 1. Ok, klar das entspricht der Forderrung. Nur die Aufgabe sagt, ich solle die größte Zahl finden. Aber du hast recht, das verwirrt nur das auszuschreiben. Ich werde einfach dann schreiben 511/2^9 * 2^7 Mehr will er ja auch gar nicht sehen. Ich danke dir vielmals das du mir soviel geholfen hast !
Ne ok doch nicht klar. 511/2^9 * 2^7 ist doch jetzt richtig oder? Weil du sagtest das vorher, aber das stimmt ja net.
Kukuku schrieb: > Ne ok doch nicht klar. 511/2^9 * 2^7 ist doch jetzt richtig oder? > Weil du sagtest das vorher, aber das stimmt ja net. Doch, das passt schon. Dein 511 * 2^-2 = 127.75 passte nicht.
A. K. schrieb: > Kukuku schrieb: >> Ne ok doch nicht klar. 511/2^9 * 2^7 ist doch jetzt richtig oder? >> Weil du sagtest das vorher, aber das stimmt ja net. > > Doch, das passt schon. Dein 511 * 2^-2 = 127.75 passte nicht. Irgendwie bin ich gerade verwirrt. Warum soll das denn nicht passen? Die Formel sagt doch m * b^e , das 511/2^9 * 2^7 ist. <=> 511 * 2^-7 * 2^9 = 511 * 2^-2 511/2^9 * 2^7 ist doch 127.75 Also ist das doch äquivalent. So habe ich doch ein bei der kleinsten positiven darstellbaren Zahl gerechnet. Das was ich vorher geschrieben hatte ( 511/2^9 * 2^7 dann = 511 * 2^-9 * 2^7 = 511 * 2^2 = 2044). Kann doch nicht stimmen, weil ich die Potenzgesetze falsch angewendet habe. Das ist doch 511 * 2^(-9+7)
Kukuku schrieb: > Irgendwie bin ich gerade verwirrt. Warum soll das denn nicht passen? Tu es, sorry. Ich hatte gedacht, du beziehst dich bei der Korrektur auf die Mantissenrechnung, nicht das Gesamtergebnis. Und hatte deine Rechenkünste nicht komplett nachvollzogen.
:
Bearbeitet durch User
Alles klar ! Dann nochmal wirklich vielen Dank an dieser Stelle. Liebe Grüße und noch einen schönen restlichen Nikolaus-Tag :) Und natürlich Wochenende.
Eigentlich erwartete ich noch deine Erkenntnisse zum unteren Ende. :)
A. K. schrieb: > Nur wirst du kaum das Unvermögen deines Taschenrechners Das ist nicht "mein" Taschenrechner, sondern der, der mit einem der am weitesten verbreiteten PC-Betriebssysteme mit über 20 Jahren Entwicklungsgeschichte von einem Softwarekonzern mit Firmensitz in Redmond/USA ausgeliefert wird :-(
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.