Zurück  F R E E S T I L E - Community > Speakers Corner - Diskussionen und Spiele > Computer und Programmierung - Telekommunikation
Benutzername
Kennwort


Antwort
Thema gelesen: 10520 x | Antworten: 41 | online: 1 Themen Tools durchsuchen Anzeige Modus

Alt 06.11.2004, 18:07  #11
MrAnderson
Lord of the MS-DOS
 
MrAnderson's Benutzerbild
 
Dabei seit: 08 Sep 2001
Ort: PC
Beiträge: 1.244
Sende eine Nachricht via ICQ an MrAnderson
Standard Re: Matisse ?!

Zitat:
Original geschrieben von Little Ron
Ich mein vom Betrag...
Ist die Mantisse vom Betrag immer kleiner als 10?

Danke für deine Erklärungen , und für die Hilfe auf meine Fragen!
Ich werd erst mal rechnen und dann stell ich dir Fragen, wenn ich noch welche hab, OK?
Ich glaub, jetzt versteh ich dich. Du meinst: Wenn das Komma nach der ersten Ziffer kommt, kann es keine zwei Ziffern vor dem Komma haben. Deswegen wäre das Höchste, was im Binärsystem denkbar wäre 1,111... bzw. im Dezimalsystem 9,999... so meinst Du doch, oder?

Antwort: jain, ...ich sollte noch ein paar Worte zu Theorie und Praxis verlieren:

Theorie: Eine Mantisse besteht nur aus Ziffern nach dem Komma. D.h. eine Mantisse ist dann sogar < 1. In der Informatik rechnet man mit Binärzahlen und da setzt man dann eine Ziffer vor das Komma und speichert, wie es die Mathematik, verlangt nur die Nachkommastellen, da die Vorkommastelle ja klar ist, weil sie nur 1 sein kann. Auch hier ist die Mantisse also < 1.

Praxis: Man speichert zwar nur den Nachkommateil. Die 1 vor dem Komma gehört aber irgendwie dazu, sodass man auch das Gesamte als Mantisse bezeichnet. D. h. für eine Mantisse m gilt hier: 1 <= m < 2. Da wir als Menschen i. A. im Dezimalsystem denken, hat man in der Praxis kurzerhand auch die dezimalen Zahlen umgeformt zu Darstellungen wie 5,1234 und Mantisse genannt. Hier gilt dann für m: 1 <= m < 10. Als richtig kann man das eigentlich schon nicht mehr bezeichnen, aber bei Taschenrechnern ist das normal und es geht sogar noch weiter: Wenn im Zusammenhang klar ist, was gemeint ist, kann man sogar eine Folge, die aus Vorkommastellen besteht, als Mantisse bezeichnen. Davon rate ich aber ab.

Das ist alles eine sprachliche Ungenauigkeit, weil man sich nicht mit der Vorkommastelle verkünsteln will, sie aber auch nicht weglassen will. Diese Vorkommastelle ist nämlich ganz nützlich, denn sonst gölte:

1 --> 0,1 * 10^1.

Also: Streng genommen gilt für jede Mantisse m:

0 <= m < 1

Das Beispiel in meinem ersten Beitrag war also nicht wirklich korrekt.
Man darf dann beim Rechnen mit IEEE-754-Zahlen halt nicht die Vorkommastelle vergessen.
Für Inhalt und Rechtmäßigkeit dieses Beitrags trägt der Verfasser MrAnderson die alleinige Verantwortung. (s. Haftungshinweis)
MrAnderson ist offline   Antwort mit Zitat FTOR-Chat
Alt 06.11.2004, 18:42  #12
MrAnderson
Lord of the MS-DOS
 
MrAnderson's Benutzerbild
 
Dabei seit: 08 Sep 2001
Ort: PC
Beiträge: 1.244
Sende eine Nachricht via ICQ an MrAnderson
Standard Re: Matisse ?!

Zitat:
Original geschrieben von Little Ron
Mir fehlen noch 3 Dinge für den Vortrag!
- Beschreiben sie die Darstellung von real-Werten und gehen sie auf dessen Formatierungsmöglichkeiten in der Ausgabe ein!
- gibt es spezielle Konstanten innerhalb des datentyps real?
- untersuchen sie, ob ein- und Ausgaben für werte dieses Datentyps möglich sind

Kannst du mir da helfen?

1. ist eine komische Aufgabenstellung. Man kann aber schon einiges schreiben. Ich glaube, hier geht's vor allem um Basics. Darum, dass Du so eine Zahl, die unformatiert von nem Pascal-Programm ausgegeben wird, lesen kannst. Die ist nämlich ziemlich hässlich. Schreib Dir einfach mal ein kleines Beispielproggi und schau dir die Ausgabe an. Da solltest Du eigentlich alleine rausfinden, wie die unformatierte real-Zahl zu interpretieren ist. Die Zahl 1 sieht z. B. so aus:

1.0000000000E+00

Tipp: scheue Dich nicht, die Zahl zu zerlegen und zu analysieren, wo was für Zeichen stehen können. Vergleiche auch mit dem Taschenrechner. Wenn Du rausgefunden hast, wie diese Zahlen aufgebaut sind, kannst Du eine Zahl, die Du im Programm einer real-Variablen zuordnest auch so formatieren. Der Compiler verarbeitet das.

Was die Formatierungen angeht, so kannst Du festlegen, wie die Zahl angezeigt werden soll, indem du direkt hinter die Variable einen Doppelpunkt anfügst, gefolgt von einer Zahl. Ggf. kann danach noch ein Doppelpunkt folgen und noch eine Zahl. Also z. B.:

write(1.234:6:2);

Den Rest solltest Du relativ leicht (auch durch Probieren) rausfinden können.

2. Ich hoffe, ich verstehe die Frage richtig: Gemeint ist doch: Was ist in real konstant? Da würd ich den Aufbau anführen, also wieviele Stellen wofür reserviert sind und wie lang die Zahl insgesamt ist. Dann die Basis, den Bias,... schau einfach mal durch, was alle real-Zahlen gemeinsam haben.

3. Was soll die Frage? ... Das ist Pascal. Natürlich kannst Du Zahlen in dieser Form ein- und ausgeben. Auch wenn sie so ne kranke Form haben wie 1.00...E-12 (hab ich ja oben schon geschrieben). Die werden automatisch umgewandelt. Wenn Du z. B. schreibst:

write(1.0);

wird erst 1.0 umgewandelt in eine Zahl vom Typ real. Damit kann eigentlich nur der Rechner was anfangen, als Normalsterblicher kannste sowas ja nicht entziffern. Anschließend sucht der Compiler in seinen Bibliotheken nach einer Funktion write mit einem einzelnen Parameter vom Typ real. Diese Funktion erhält nun dieses 48-Bit lange real-Monster und wandelt es automatisch wieder in eine einigermaßen lesbare Dezimalzahl um. Dafür musst Du nichts zutun. Ich glaube die Aufgabenstellung zielt auf diese Möglichkeiten ab. Vergleiche auch mit 1. Ansonsten kannste sie ja überall hin ausgeben. Wenn Du sie auf den Bildschirm ausgibst, ist sie einigermaßen lesbar. (also nicht ne Bitfolge und im Zehnersystem) Wenn Du sie in ne Datei schreibst, haste nur die Bitfolge und das ist ziemlich mühselig wieder auseinanderzunehmen. Wenn Du's wieder einliest, wird's natürlich wieder handlich. Es gibt glaub auch Funktionen um sie in Strings umzuwandeln. Möglich ist fast alles. Real ist ein Kernstück von Pascal.

Das sind jetzt natürlich nur Wegweiser, ausgehend davon, wie ich die Aufgaben verstanden habe. Kann Dir doch nicht die eigentliche Arbeit abnehmen.


btw: Ich hab grad gelesen, dass die Entwickler sowohl Kommazahlen allgemein als real bezeichnen, als auch den ganz speziellen Datentyp real. Der Begriff ist also überladen. Somit stimmt meine Aussage von vorhin, real wäre kein Überbegriff, natürlich nicht.
Im reinen Code ist real aber kein Oberbegriff, sondern ein Datentyp wie auch single oder double.

Zuletzt bearbeitet von MrAnderson, 06.11.2004 um 18:48.
Für Inhalt und Rechtmäßigkeit dieses Beitrags trägt der Verfasser MrAnderson die alleinige Verantwortung. (s. Haftungshinweis)
MrAnderson ist offline   Antwort mit Zitat FTOR-Chat
Alt 06.11.2004, 18:45  #13
Little Ron
Top-Mitglied

 
Little Ron's Benutzerbild
 
Dabei seit: 08 Aug 2004
Ort: Petershagen bei Bln
Beiträge: 1.225
Sende eine Nachricht via ICQ an Little Ron
Standard Re: Matisse ?!

was ist also die Zahl -650,00001255 ?
__________________
Niveau ist keine Hautcreme!

HA HO HE HERTHA BSC

Für Inhalt und Rechtmäßigkeit dieses Beitrags trägt der Verfasser Little Ron die alleinige Verantwortung. (s. Haftungshinweis)
Little Ron ist offline   Antwort mit Zitat FTOR-Chat
Alt 06.11.2004, 18:49  #14
MrAnderson
Lord of the MS-DOS
 
MrAnderson's Benutzerbild
 
Dabei seit: 08 Sep 2001
Ort: PC
Beiträge: 1.244
Sende eine Nachricht via ICQ an MrAnderson
Standard Re: Matisse ?!

Zitat:
Original geschrieben von Little Ron
was ist also die Zahl -650,00001255 ?
In was?

Als single wäre es 11000100001000101000000000000000 wobei, wie man sieht, die 1255 am Ende wegen Rundung weggefallen sind. Im Internet gibt es Rechner, (http://www.h-schmidt.net/FloatApplet/IEEE754de.html) die einem das Abnehmen. Du kannst Dir ja auch ein Programm schreiben, dass das macht. Du solltest aber auf jeden Fall ein paar Beispiele von Hand durchrechnen. So kommst Du zu einem tieferen Verständnis dieser Zahlen. Und mit etwas Übung kannste so Bitfolgen auch direkt einigermaßen genau ablesen. (Wie in Matrix: "Ich sehe den Code gar nicht mehr" ) oder alternativ wirklich so ein Programm schreiben, denn da rechnest Du automatisch nach, ob das Ergenis dann stimmt.

Zuletzt bearbeitet von MrAnderson, 06.11.2004 um 19:06.
Für Inhalt und Rechtmäßigkeit dieses Beitrags trägt der Verfasser MrAnderson die alleinige Verantwortung. (s. Haftungshinweis)
MrAnderson ist offline   Antwort mit Zitat FTOR-Chat
Alt 06.11.2004, 18:57  #15
Little Ron
Top-Mitglied

 
Little Ron's Benutzerbild
 
Dabei seit: 08 Aug 2004
Ort: Petershagen bei Bln
Beiträge: 1.225
Sende eine Nachricht via ICQ an Little Ron
Standard Re: Matisse ?!

in gleitkommadarstellung (also 32 Bit)
kannst du mir das noch m,al an einem bsp. erklären?
__________________
Niveau ist keine Hautcreme!

HA HO HE HERTHA BSC

Für Inhalt und Rechtmäßigkeit dieses Beitrags trägt der Verfasser Little Ron die alleinige Verantwortung. (s. Haftungshinweis)
Little Ron ist offline   Antwort mit Zitat FTOR-Chat
Alt 06.11.2004, 19:26  #16
MrAnderson
Lord of the MS-DOS
 
MrAnderson's Benutzerbild
 
Dabei seit: 08 Sep 2001
Ort: PC
Beiträge: 1.244
Sende eine Nachricht via ICQ an MrAnderson
Standard Re: Matisse ?!

also die Konversion:

Du weißt, Du willst so eine 32-Bit-Zahl und Du hast -650,00001255 gegeben.

Der Anfang ist einfach: Das Vorzeichenbit.
Minus wird 1. Also ist das erste Bit schonmal 1. Fehlen nur noch 31.

Es folgt eigentlich der Exponent, aber um den zu bestimmen, musst Du erst die Mantisse berechnen:

650 ist der Teil vor dem Komma. Die Umwandlung ins binäre erfolgt durch wiederholte Division durch 2. Also:

650 : 2 = 325 R 0
325 : 2 = 162 R 1
162 : 2 = 81 R 0
81 : 2 = 40 R 1
40 : 2 = 20 R 0
20 : 2 = 10 R 0
10 : 2 = 5 R 0
5 : 2 = 2 R 1
2 : 2 = 1 R 0
1 : 2 = 0 R 1

diese Ziffernfolge von unten nach unten nach oben ergibt die Mantisse von links nach rechts. Also 1010001010. Die erste Ziffer schmeißen wir weg, weil ohnehin klar. Bleibt 010001010. Jetzt wissen wir auch wie groß der Exponent wird. Um soviele Stellen wie jetzt dastehen muss das Komma nach links verschoben werden. (Also 9) Der Bias beträgt 127. 9 + 127 = 136. Binär ist 136

136 : 2 = 68 R 0
68 : 2 = 34 R 0
34 : 2 = 17 R 0
17 : 2 = 8 R 1
8 : 2 = 4 R 0
4 : 2 = 2 R 0
2 : 2 = 1 R 0
1 : 2 = 0 R 1

die achtstellige Bitfolge des Exponenten lautet also

10001000

Hätten wir mehr Stellen gehabt, wäre die Zahl nicht darstellbar gewesen. Wären es weniger gewesen, hätten wir lnks noch mit Nullen auf acht Stellen aufgefüllt.

Stellen wir die Mantisse noch fertig. Wir haben schon 9 von 23 Stellen in der Mantisse. Wir sollten also noch 14 Stellen nach dem Komma berechnen. Besser 15, um ggf. korrekt zu runden.

0,00001255 * 2 = 0,0000251 -> 0
0,0000251 * 2 = 0,0000502 -> 0
0,0000502 * 2 = 0,0001004 -> 0
0,0001004 * 2 = 0,0002008 -> 0
0,0002008 * 2 = 0,0004016 -> 0
0,0004016 * 2 = 0,0008032 -> 0
0,0008032 * 2 = 0,0016064 -> 0
0,0016064 * 2 = 0,0032128 -> 0
0,0032128 * 2 = 0,0064256 -> 0
0,0064256 * 2 = 0,0128512 -> 0
0,0128512 * 2 = 0,0257024 -> 0
0,0257024 * 2 = 0,0514048 -> 0
0,0514048 * 2 = 0,1028096 -> 0
0,1028096 * 2 = 0,2056192 -> 0

(0,2056192 * 2 = 0,4112384)

Wir füllen also einfach auf mit Nullen. D. h. die Mantisse lautet:
01000101000000000000000

die gesamte Zahl ist dann

VZB|E|M
11000100001000101000000000000000


wenn wir vergleichen mit dem Ergebnis des IEEE-Rechners können wir feststellen, dass es übereinstimmt.

btw: Die heißen alle Gleitkommazahlen. Zur Unterscheidung nenn sie bitte real, single, double oder extended.
Für Inhalt und Rechtmäßigkeit dieses Beitrags trägt der Verfasser MrAnderson die alleinige Verantwortung. (s. Haftungshinweis)
MrAnderson ist offline   Antwort mit Zitat FTOR-Chat
Alt 06.11.2004, 19:29  #17
Little Ron
Top-Mitglied

 
Little Ron's Benutzerbild
 
Dabei seit: 08 Aug 2004
Ort: Petershagen bei Bln
Beiträge: 1.225
Sende eine Nachricht via ICQ an Little Ron
Standard Re: Matisse ?!

und wenn man einen exponenten hat, der binär 10 stellen hat, dann kann man nicht mehr den untertypen real nehmen, stimmts?
Muss man dann single nehmen, also entsprechend mehr bit für den exponenten?
__________________
Niveau ist keine Hautcreme!

HA HO HE HERTHA BSC

Für Inhalt und Rechtmäßigkeit dieses Beitrags trägt der Verfasser Little Ron die alleinige Verantwortung. (s. Haftungshinweis)
Little Ron ist offline   Antwort mit Zitat FTOR-Chat
Alt 06.11.2004, 19:35  #18
MrAnderson
Lord of the MS-DOS
 
MrAnderson's Benutzerbild
 
Dabei seit: 08 Sep 2001
Ort: PC
Beiträge: 1.244
Sende eine Nachricht via ICQ an MrAnderson
Standard Re: Matisse ?!

Ja und Nein.

Ja: real geht nicht mehr. Da hast du Recht.

Nein: single bietet auch nur 8 Stellen im Exponenten. Geht also auch nicht. Du musst ausweichen auf double oder extended.

Nimm's mir nicht übel, aber ich geh jetzt erstmal offline. Erkältung auskurieren. Was nicht heißt, dass ich Deine Fragen nicht mehr beantworten möchte. Ich antworte dann halt später.
Für Inhalt und Rechtmäßigkeit dieses Beitrags trägt der Verfasser MrAnderson die alleinige Verantwortung. (s. Haftungshinweis)
MrAnderson ist offline   Antwort mit Zitat FTOR-Chat
Alt 06.11.2004, 19:47  #19
Little Ron
Top-Mitglied

 
Little Ron's Benutzerbild
 
Dabei seit: 08 Aug 2004
Ort: Petershagen bei Bln
Beiträge: 1.225
Sende eine Nachricht via ICQ an Little Ron
Standard Re: Matisse ?!

Zitat:
Original geschrieben von MrAnderson
Also 1010001010. Die erste Ziffer schmeißen wir weg, weil ohnehin klar. Bleibt 010001010. .


Das versteh ich leider nicht! Ach scheiße!


Sorry, dass ich dich gestört habe!
__________________
Niveau ist keine Hautcreme!

HA HO HE HERTHA BSC

Für Inhalt und Rechtmäßigkeit dieses Beitrags trägt der Verfasser Little Ron die alleinige Verantwortung. (s. Haftungshinweis)
Little Ron ist offline   Antwort mit Zitat FTOR-Chat
Alt 06.11.2004, 20:26  #20
MrAnderson
Lord of the MS-DOS
 
MrAnderson's Benutzerbild
 
Dabei seit: 08 Sep 2001
Ort: PC
Beiträge: 1.244
Sende eine Nachricht via ICQ an MrAnderson
Standard Re: Matisse ?!

Jetzt wirf doch nicht gleich das Handtuch. Und hättest Du mich gestört, hätte ich Dir entweder nicht geantwortet oder ich hätte das geschrieben.

1010001010 das ist das was vor dem Komma steht. Die Zahl lautet binär, wenn Du das Komma nicht verschiebst:

1010001010,00000000000000

Du verschiebst das Komma immer so, dass es hinter der ersten Ziffer steht. Also

1,01000101000000000000000

Da wir uns im binären System befinden, ist die erste Ziffer immer 1. Sie kann ja nicht 2 oder 3 sein, sondern nur 1. 0 kann sie auch nicht sein, denn dann wäre es keine geltende Ziffer und wir hätten sie nicht hingeschrieben. Das heißt wir brauchen sie nicht speichern, da wir wissen, dass sie immer 1 ist. (Deswegen lässt sich die Null auch nicht normal darstellen)

Anders: im Dezimalsystem würde man ja nicht schreiben 00004711, sondern immer 4711. Das heißt wir wissen, dass die erste Ziffer keine 0 ist.
Genauso bei einer binären Zahl. Man schreibt doch nicht 00001011, sondern immer 1011. Die erste Ziffer ist keine 0. Klar soweit?

Im binären System gibt es ja nur die Ziffern 1 und 0. Jetzt weißt Du also, dass die erste Ziffer keine Null ist. Was kann es dann noch sein? Nur eine 1. Und weil es nur eine 1 sein kann, brauchst Du sie nicht speichern. Was hättest Du davon, eine Ziffer zu speichern, die Du sowieso weißt?


Verständlicher?


Wenn nicht, hilft es vielleicht einfach die Nacht drüber zu schlafen. Ich vermute, Du hast die letzten 5 Stunden nichts anderes gemacht. Da geht dann irgendwann nichts mehr. (Ich spreche da aus Erfahrung )
Für Inhalt und Rechtmäßigkeit dieses Beitrags trägt der Verfasser MrAnderson die alleinige Verantwortung. (s. Haftungshinweis)
MrAnderson ist offline   Antwort mit Zitat FTOR-Chat
AntwortSeite neu laden


Themen Tools  durchsuchen 
durchsuchen:

Erweiterte Suche
Anzeige Modus  Dieses Thema bewerten 
Dieses Thema bewerten:

Forum Regeln
Es ist dir nicht erlaubt, neue Beiträge zu schreiben.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge anzufügen.
Es ist dir nicht erlaubt, Deine Beiträge zu bearbeiten.

vB code ist An
Smilies sind An
[IMG] code ist An
HTML code ist Aus
Gehe zu



Alle Zeiten sind WEZ +2 Stunde(n). Es ist 15:18 Uhr.


© copyright: imagine grafik - dtp - screendesign
Powered by: vBulletin Version 3.0.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.