von regina » So, 15.02.2009 22:24
Hallo Constructus,
{1111011,01110100101111000110101 sehe ich jetzt da in B8}
Das habe ich auch. Das Tabellenblatt ist somit jetzt wohl in Ordnung.
Bei mir wechseln dort 0 und 1 in den Zeilen vor dem Komma unregelmäßig ab.
Unter Zeile 55 stehen nur noch 0 da – wäre dann Zeile 55 mit 1,0000... die letzte gültige? Wenn diese Rechenweise neu für jemanden ist, ist das leider recht schwer nachzuvollziehen.
Es ist mathematisch nicht wirklich schwer. Wenn man den Nachkommateil f mit 2 multipliziert und dabei eine Zahl 2f entsteht, die größer als 1 ist, dann muss die Ausgangszahl f mindest 1/2 enthalten. Wenn man nun 1 von 2f subtrahiert, dann hat man 2f-1, das kann man sich auch als 2*(f-1/2) vorstellen. Man hat also eigentlich den Zweierbruch 1/2 subtrahiert. Wenn man nun wieder mit 2 multipliziert, hat man eigentlich 4*(f-1/2). Entsteht dabei eine Zahl, die größer als 1 ist, muss f-1/2 mindestens 1/4 enthalten. Wieder 1 subtrahieren bringt 4*(f-1/2)-1, was man als 4*(f-1/2-1/4) schreiben kann. Wenn keine Zahl größer 1 entstand, dann fehlt der entsprechende Zweierbruch. So guckt man der Reihe nach, ob die Zweierbrüche enthalten sind oder nicht.
Du kannst natürlich auch nacheinander - so weit möglich - die Brüche 1/2, 1/4, 1/8, 1/16 usw. subtrahieren. Mach dir einfach eine Spalte mit den Zweierbrüchen und subtrahiere sie nacheinander, falls das Zwischenergebnis noch größer als der Bruch ist. Wenn du subtrahieren konntest, notiere eine 1 sonst eine 0.
0111010010111100011010100111111011111001110111 steht nach Eingabe von 55 in Zelle F6 bzw. 1111011,0111010010111100011010100111111011111001110111 in B8 (bei 123,456 in B3). Habe ich Deine Beschreibung jetzt richtig nachvollzogen? Mir hat sich der Kopf so oft gedreht, daß ich mich jetzt von hinten begucken kann...
Die Genauigkeitsprobleme entstehen rechts am Ende der Zahlen. Es fängt mit 0,456000000000003 an. Dort steht am Ende eine 3, obwohl beim händischen Zerlegen der Dezimalteil von 123,456 natürlich nur 0,456 ist. Da man nun laufend mit 2 multipliziert und immer wieder intern zwischen dezimal und dual umgewandelt wird, wandert diese Fehlstelle weiter nach links.
In Zeile 28 sind wir dann schon bei 0,664000000804663 und in Zeile 44 bei 0,904052734375000. Von Hand gerechnet hätten wir nur 0,664 bzw. 0,904 also drei Stellen nach dem Komma wie am Anfang auch. In der Zeile 49 ist dann der Moment erreicht, wo ein Übertrag aus diesen Fehlstellen in die eigentlichen Ziffern unserer Zahlenfolge reinreicht und diese dadurch ungültig macht. Mmh, vielleicht könnte man zwischendurch immer auf die ursprüngliche Anzahl von Dezimalstellen runden? Das habe ich noch nicht ausprobiert.
Erstsemester? In welchem Fach denn?
Informatik
Oh, Regina, das ganze klingt schon recht anspruchsvoll. Ich nehme aber mal an, daß auch andere Leute hier ihren Honig heraussaugen können. Mir gefällt das Thema sehr, obwohl ich manchmal doch ein wenig rotiere.
Das liegt nur daran, dass solche Umrechnungen im "normalen" Leben nicht vorkommen und man auch in der Schule nicht diesen Algorithmus benutzt, sondern einfach Zweierpotenzen subtrahiert.
Hast Du das in einer neuen Datei integriert, die jetzt weggelöscht ist, oder sollte ich das nach hawes Tipp vom 12.02. 20:06 noch einbauen?
Ich hatte es nicht integriert, du musst es noch wie von hawes beschrieben einbauen. Ich habe mir zusätzlich einen Ordner mit Code-Schnipseln angelegt. So kann ich bei Bedarf eine Lösung einfach wieder bei einer neuen Datei einfügen.
Wenn ich jetzt behaupte, daß der Thread bis hierher auch für Knobler interessant ist – erzähl ich da zuviel?
Auch Spielen muss ab und zu sein.
Viel Spaß beim Rumprobieren.
Regina
Hallo Constructus,
[quote]
{1111011,01110100101111000110101 sehe ich jetzt da in B8}
[/quote]
Das habe ich auch. Das Tabellenblatt ist somit jetzt wohl in Ordnung.
[quote] Bei mir wechseln dort 0 und 1 in den Zeilen vor dem Komma unregelmäßig ab. [b]Unter[/b] Zeile 55 stehen nur noch 0 da – wäre dann Zeile 55 mit 1,0000... die letzte gültige? Wenn diese Rechenweise neu für jemanden ist, ist das leider recht schwer nachzuvollziehen. :(
[/quote]
Es ist mathematisch nicht wirklich schwer. Wenn man den Nachkommateil f mit 2 multipliziert und dabei eine Zahl 2f entsteht, die größer als 1 ist, dann muss die Ausgangszahl f mindest 1/2 enthalten. Wenn man nun 1 von 2f subtrahiert, dann hat man 2f-1, das kann man sich auch als 2*(f-1/2) vorstellen. Man hat also eigentlich den Zweierbruch 1/2 subtrahiert. Wenn man nun wieder mit 2 multipliziert, hat man eigentlich 4*(f-1/2). Entsteht dabei eine Zahl, die größer als 1 ist, muss f-1/2 mindestens 1/4 enthalten. Wieder 1 subtrahieren bringt 4*(f-1/2)-1, was man als 4*(f-1/2-1/4) schreiben kann. Wenn keine Zahl größer 1 entstand, dann fehlt der entsprechende Zweierbruch. So guckt man der Reihe nach, ob die Zweierbrüche enthalten sind oder nicht.
Du kannst natürlich auch nacheinander - so weit möglich - die Brüche 1/2, 1/4, 1/8, 1/16 usw. subtrahieren. Mach dir einfach eine Spalte mit den Zweierbrüchen und subtrahiere sie nacheinander, falls das Zwischenergebnis noch größer als der Bruch ist. Wenn du subtrahieren konntest, notiere eine 1 sonst eine 0.
[quote]
0111010010111100011010100111111011111001110111 steht nach Eingabe von 55 in Zelle F6 bzw. 1111011,0111010010111100011010100111111011111001110111 in B8 (bei 123,456 in B3). Habe ich Deine Beschreibung jetzt richtig nachvollzogen? Mir hat sich der Kopf so oft gedreht, daß ich mich jetzt von hinten begucken kann... :lol:
[/quote]
Die Genauigkeitsprobleme entstehen rechts am Ende der Zahlen. Es fängt mit 0,456000000000003 an. Dort steht am Ende eine 3, obwohl beim händischen Zerlegen der Dezimalteil von 123,456 natürlich nur 0,456 ist. Da man nun laufend mit 2 multipliziert und immer wieder intern zwischen dezimal und dual umgewandelt wird, wandert diese Fehlstelle weiter nach links.
In Zeile 28 sind wir dann schon bei 0,664000000804663 und in Zeile 44 bei 0,904052734375000. Von Hand gerechnet hätten wir nur 0,664 bzw. 0,904 also drei Stellen nach dem Komma wie am Anfang auch. In der Zeile 49 ist dann der Moment erreicht, wo ein Übertrag aus diesen Fehlstellen in die eigentlichen Ziffern unserer Zahlenfolge reinreicht und diese dadurch ungültig macht. Mmh, vielleicht könnte man zwischendurch immer auf die ursprüngliche Anzahl von Dezimalstellen runden? Das habe ich noch nicht ausprobiert.
[quote] Erstsemester? In welchem Fach denn? [/quote]
Informatik
[quote]Oh, Regina, das ganze klingt schon recht anspruchsvoll. Ich nehme aber mal an, daß auch andere Leute hier ihren Honig heraussaugen können. Mir gefällt das Thema sehr, obwohl ich manchmal doch ein wenig rotiere. [/quote]
Das liegt nur daran, dass solche Umrechnungen im "normalen" Leben nicht vorkommen und man auch in der Schule nicht diesen Algorithmus benutzt, sondern einfach Zweierpotenzen subtrahiert.
[quote]
Hast Du das in einer neuen Datei integriert, die jetzt weggelöscht ist, oder sollte ich das nach hawes Tipp vom 12.02. 20:06 noch einbauen?
[/quote]
Ich hatte es nicht integriert, du musst es noch wie von hawes beschrieben einbauen. Ich habe mir zusätzlich einen Ordner mit Code-Schnipseln angelegt. So kann ich bei Bedarf eine Lösung einfach wieder bei einer neuen Datei einfügen.
[quote]
Wenn ich jetzt behaupte, daß der Thread bis hierher auch für Knobler interessant ist – erzähl ich da zuviel? :o
[/quote]
Auch Spielen muss ab und zu sein. :)
Viel Spaß beim Rumprobieren.
Regina