Hochschule Ravensburg-Weingarten Fakultät Technologie und Management Informationsverarbeitung Vorlesung zur Datenverarbeitung 1 Zahlensysteme Inhalt 2 ZAHLENSYTEME ..........................................................................................................................................2-2 2.1 ZAHL .........................................................................................................................................................2-2 2.2 ZAHLENDARSTELLUNG .............................................................................................................................2-3 2.2.1 Zahlensysteme für die EDV.................................................................................................................2-5 2.2.2 Umwandlung (Konvertierung) ............................................................................................................2-6 2.2.2.1 Konvertierung von Dualzahlen in Oktal- bzw. Hexadezimalzahlen ........................................................2-7 2.2.2.2 Konvertierung von Dual-, Oktal- bzw. Hexadezimal- in Dezimalzahlen ................................................2-8 2.2.2.2.1 Ganze rationale Funktionen .................................................................................................................2-8 2.2.2.2.2 Anwendung des Hornerschemas zur Konvertierung........................................................................ 2-10 2.2.2.3 Konvertierung von Dezimalzahlen in Dual-, Oktal- bzw. Hexadezimalzahlen.................................... 2-11 2.2.2.3.1 Die Dezimalzahl 27 soll im Dualsystem dargestellt werden. .......................................................... 2-11 2.2.2.3.2 Die Dezimalzahl 0,0033125 soll im Dualsystem dargestellt werden.............................................. 2-13 2.2.3 Zahlendarstellung im Computer .......................................................................................................2-14 2.2.3.1 2.2.3.2 Festpunktzahlen ....................................................................................................................................... 2-15 Gleitpunktzahlen im IEEE-Standard ...................................................................................................... 2-16 DV1_Kapitel_2.doc Seite 2-1 von 18 Rüdiger Siol 12.09.2009 16:27 Hochschule Ravensburg-Weingarten Fakultät Technologie und Management Informationsverarbeitung Vorlesung zur Datenverarbeitung 1 Zahlensysteme 2 Zahlensyteme 2.1 Zahl o o o o o o o o o o o o o o o Ordnungszahl Kardinalzahl Ganzrationale Zahl Imaginäre Zahl Irrationale Zahl Natürliche Zahl Negative Zahl Positive Zahl Rationale Zahl Reelle Zahl Komplexe Zahl Gebrochene Zahl Algebraische Zahl Transzendente Zahl Liouvillsche Zahl Zahlen • • • • Natürliche Zahlen Ganze Zahlen Rationale Zahlen Reelle Zahlen€ € – Alle rationalen und € irrationalen Zahlen sowie auch die transzendenten Zahlen € • Komplexe Zahlen (r.siol) 07.03.2007 DV1_Kapitel_2.doc N = {0,1,2,…} Z = {…,−3,−2,−1,0,1,2,3,…} p Q = { | p,q ∈ Z ^q ≠ 0} q Algebraische _ Irrationalität = 3 10 = 2.154… Transzendente _ Zahl = π = 3.141592… Transzendente _ Zahl = e = 2.718281… C = {z|z = a + jb mit a,b € R, j2 = -1} Hochschule Ravensburg-Weingarten Technik | Wirtschaft | Sozialwesen Seite 2-2 von 18 2 Rüdiger Siol 12.09.2009 16:27 Hochschule Ravensburg-Weingarten Fakultät Technologie und Management Informationsverarbeitung Vorlesung zur Datenverarbeitung 1 Zahlensysteme 2.2 Zahlendarstellung Für das numerische Rechnen mit reellen Zahlen verwendet man Darstellungen der nicht negativen reellen Zahlen als Summe von natürlichzahligen Vielfachen zν ganzzahliger Potenzen einer vorgegebenen Basis b, wobei b eine natürliche Zahl >1 ist und die Ziffern zν nur die Werte 0, 1, …, b-1 annehmen können. Man schreibt abkürzend für eine Zahl Z: € € Z = zν bν + zν −1bν −1 + … + z1b1 + z0b 0 + z−1b−1 + … + z− µ b− µ + … Z = zν zν −1 …z1z0 ,z−1 …z− µ … Das Bildungsgesetz lautet: n € Z= ∑z b ν ν (m > 0,n ≥ 0;m,n ∈ N ) ν =−m Die Ziffern mit ν ≥ 0 bilden den ganzen, die mit ν < 0 den gebrochenen Teil der Zahl. € € Ein Beispiel hierzu: € € Die Dezimaldarstellung, d.h. b = 10, für die Dezimalzahl (Man sagt auch Gleitpunktzahl bzw. floating point number; spricht im Deutschen1 aber auch von Gleitkommazahlen) 139.8125 lautet: 139.8125 = 1*10 2 + 3*101 + 9 *10 0 + 8 *10−1 + 1*10−2 + 2 *10−3 + 5 *10−4 Die Zahl gliedert sich in einen ganzen und einen gebrochenen Teil. € Eine Zahl wird also einfach dargestellt durch eine Folge von Ziffern. Die Stellung des Kommas (Punktes) gibt Auskunft über die Potenz von b, mit der jede der Ziffern zu multiplizieren ist. Eine reelle Zahl in Verbindung mit ihrer Darstellung zur Basis 10 heißt Dezimalzahl; analoge Begriffsbildungen lassen sich bei den übrigen Darstellungen vornehmen. 1 In kaufmännischen Bereichen aber auch in vielen anderen, so z.B. auch bei der Verwendung von Tabellenkalkulationsprogrammen wie Excel, wird der Punkt verwendet, um tausender Bereiche vor und nach dem Komma gegeneinander abzugrenzen und die Zahl so übersichtlicher zu machen. In Programmiersprachen wie z.B.: C und C++ trennt der Punkt die Vor- und Nachkommastellen bei den zugehörigen Datentypen wie float, double oder auch long double. DV1_Kapitel_2.doc Seite 2-3 von 18 Rüdiger Siol 12.09.2009 16:27 Hochschule Ravensburg-Weingarten Fakultät Technologie und Management Informationsverarbeitung Vorlesung zur Datenverarbeitung 1 Zahlensysteme Darstellungen zur Basis: 2 3 4 5 8 10 12 16 = = = = = = = = Dual- oder Binärsystem Ternärsystem Quaternärsystem Quinärsystem Oktalsystem Dezimalsystem Duodezimalsystem Sedezimal-, Hexadezimalsystem Bei Zahlendarstellungen zur Basis b wird das arithmetische Komplement der gegebenen Zahl zu einer vorbestimmten Potenz der Basis b als b-Komplement bezeichnet (z.B. Zehnerkomplement im Dezimalsystem). Das (b – 1) Komplement ist die Zahl, die man erhält, wenn man jede Ziffer der gegebenen Zahl von b – 1 subtrahiert (z.B. Neunerkomplement im Dezimalsystem). DV1_Kapitel_2.doc Seite 2-4 von 18 Rüdiger Siol 12.09.2009 16:27 Hochschule Ravensburg-Weingarten Fakultät Technologie und Management Informationsverarbeitung Vorlesung zur Datenverarbeitung 1 Zahlensysteme Zahlensysteme für die EDV2 Im Zusammenhang mit der Nutzung von Computern sind folgende Zahlensysteme gebräuchlich: 2.2.1 Zahlensystem Basis zulässige Ziffern Dualsystem 2 0, 1 Oktalsystem 8 0, 1, 2, 3, 4, 5, 6, 7 Hexadezimalsystem 16 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F (Sedezimalsystem) (Die Buchstaben A…F stehen für die Werte 10…15 und können auch als Kleinbuchstaben dargestellt werden Dezimalsyastem 10 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Dual- Oktal- Dezimal0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 10001 10010 … 0 01 02 03 04 05 06 07 010 011 012 013 014 015 016 017 020 021 022 … 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 … Hexa Hexa dezimal- dezimal0 0 0X 1 0x 1 0X 2 0x 2 0X 3 0x 3 0X 4 0x 4 0X 5 0x 5 0X 6 0x 6 0X 7 0x 7 0X 8 0x 8 0X 9 0x 9 0X A 0x a 0X B 0x b 0X C 0x c 0X D 0x d 0X E 0x e 0X F 0x f 0X10 0x10 0X11 0x11 0X12 0x12 … … Sofern die Zahlen von 0 verschieden sind schreibt man: Dezimalzahlen beginnend mit einer von 0 verschiedenen Ziffer Oktalzahlen immer mit einer führenden 0 Hexadezimalzahlen immer mit 0x bzw. 0X am Anfang Weitere Schreibweisen sind: 2 213.64 ( 8) (213.64 ) 8 EDV – Elektronische Daten Verbeitung DV1_Kapitel_2.doc € Seite 2-5 von 18 Rüdiger Siol 12.09.2009 16:27 Hochschule Ravensburg-Weingarten 2.2.2 Fakultät Technologie und Management Informationsverarbeitung Vorlesung zur Datenverarbeitung 1 Zahlensysteme Umwandlung (Konvertierung) Die Umrechnung von einem Zahlensystem in ein anderes nennt man Konvertierung. Werden mehrere Zahlensysteme gleichzeitig benutzt, so ist es üblich, die Basis als Index anzuhängen. Z.B.: für die Dezimalzahl 139.8125 ergibt sich dann: 139.812510 = 10001011.11012 = 213.648 = 8B.D16 Man kann von jedem System direkt in jedes andere Konvertieren. Die dicken Pfeile zeigen den jeweils bequemsten Weg; die anderen Varianten sind umständlicher oder zeitaufwendiger. Dezimalsystem Oktalsystem Hexadezimalsystem Dualsystem DV1_Kapitel_2.doc Seite 2-6 von 18 Rüdiger Siol 12.09.2009 16:27 Hochschule Ravensburg-Weingarten Fakultät Technologie und Management Informationsverarbeitung Vorlesung zur Datenverarbeitung 1 Zahlensysteme 2.2.2.1 Konvertierung von Dualzahlen in Oktal- bzw. Hexadezimalzahlen Die Konvertierung von Dualzahlen in Oktal- bzw. Hexadezimalzahlen ist einfach dadurch möglich, dass man vom Punkt ausgehend nach links und rechts Gruppen von drei (für Oktalzahlen) bzw. vier (für Hexadezimalzahlen) Bits bildet und den Wert derselben bestimmt. Diese Ziffern sind dann die Ziffern des Oktal- bzw. Hexadezimalsystems. Umgekehrt ersetzt man einfach die Ziffern des Oktal- bzw. Hexadezimalsystems durch die zugehörige Dualzahl. Da 8 und 16 je ganzzahlige 2-er Potenzen sind, passt das dann. Beispiel: Gegeben sei 11001110101001012 als einfache ganze Zahl, den Punkt muss man sich also ganz rechts denken. Damit liest man die Oktalzahl unmittelbar ab, denn man sieht, die Gruppierung 1 100 111 010 100 1012 also ist die Oktalzahl 1472458; entsprechend für die Hexadezimalzahl erst die Gruppierung: 1100 1110 1010 01012; also ist das die Zahl CEA516 in hexadezimaler Darstellung. Dabei dürfen die Buchstaben aber auch klein geschrieben werden, also cea516. In Programmiersprachen wie C und C++ ist festgelegt, dass Dezimalzahlen grundsätzlich mit der ersten von 0 verschiedenen Ziffer beginnen, bei Oktalzahlen wird immer eine 0 vorangestellt (0147245) und bei Hexadezimalzahlen die Zeichenfolge 0x oder 0X (0XCEA5 oder 0xcea5 oder auch gemischte Groß- und Kleinschreibung – das sieht aber nach Schlamperei aus obwohl es zulässig ist). DV1_Kapitel_2.doc Seite 2-7 von 18 Rüdiger Siol 12.09.2009 16:27 Hochschule Ravensburg-Weingarten Fakultät Technologie und Management Informationsverarbeitung Vorlesung zur Datenverarbeitung 1 Zahlensysteme 2.2.2.2 Konvertierung von Dual-, Oktal- bzw. Hexadezimal- in Dezimalzahlen Der Algorithmus für die Umwandlung eines Wertes aus dem Dual-, Oktal- bzw. Hexadezimalsystem in das Dezimalsystem lautet, wobei der Dezimalpunkt nach z0 einzufügen ist. n a= ∑z B i i (m > 0,n ≥ 0;m,n ∈ N ) i= −m Die Auflösung erfolgt dabei zweckmäßig mit dem Horner-Schema; das nachfolgend im Zusammenhang mit ganzen rationalen Funktionen erklärt und in Beispielen gezeigt wird. € € 2.2.2.2.1 Ganze rationale Funktionen Eine Funktion der Form y = f ( x ) = an x n + an−1 x n−1 + … + a1 x + a0 oder kurz € n y = ∑ ai x i i= 0 worin ai irgendwelche reelle Zahlen sind und n nichtnegativ ganz ist, heißt eine ganze rationale Funktion oder auch ein Polynom (in x). Die ai werden Koeffizienten des Polynoms € genannt. Ein Polynom heißt n-ten Grades oder von n-ter Ordnung, wenn der größte auftretende Exponent von x gleich n ist; in der oben angegebenen Form also genau dann, wenn an ≠ 0 ist. Sollen die Werte eines Polynoms für verschiedene x berechnet werden, so müssen in der angegebenen Form n Potenzwerte ermittelt und mit den Koeffizienten ai multipliziert werden. Außerdem sind dann noch alle aixi zu addieren. Das gibt zuweilen recht langwierige Rechnungen. DV1_Kapitel_2.doc Seite 2-8 von 18 Rüdiger Siol 12.09.2009 16:27 Hochschule Ravensburg-Weingarten Fakultät Technologie und Management Informationsverarbeitung Vorlesung zur Datenverarbeitung 1 Zahlensysteme Meist ist es einfacher ein Polynom in der Form y = (((…(an x + an−1 )x + an−2 )x + an−3 )x + … + a1 )x + a0 aufzuschreiben und entsprechend zu berechnen. € Diese Gleichung ist die formelmäßige Darstellung des Hornerschen Schemas. Praktisch kann also der Wert eines Polynoms f(x) vom Grad n für einen beliebigen Wert von x durch das folgende Schema bestimmt werden: an an-1 an-2 an-3 … a2 a1 a0 x x* a’n x* a’n-1 x* a’n-2 … x* a’3 x* a’2 x* a’1 a’n a’n-1 a’n-2 a’n-3 … a’2 a’1 a’0 In der ersten Zeile stehen die gegebenen n+1 Koeffizienten ai des Polynoms, und zwar auch die, die gleich Null sind! Ist außerdem x gegeben, so erhält man die im Schema auftretenden Größen a’i rekursiv nach den Formeln a’n a’i = = an ai + x*a’i+1 ∀i ∈ ((n −1)…0) Es wird immer zuerst die erste Zeile hingeschrieben und dann von links nach rechts fortschreitend spaltenweise weitergerechnet. Der gesuchte Polynomwert ist: € f(x) = a’0 Beispiel: Gegeben sei das Polynom 4-ten Grades: y = −5x 4 + 25x 2 − 7x + 3 Man berechne den Funktionswert an der Stelle x = -2 € x=-2 -5 0 25 -7 3 10 -20 -10 34 -5 10 5 -17 37 Der gesuchte Polynomwert ist also: f(-2) = 37 Dieses Vefahren bezeichnet man als Hornersches3 Schema. 3 Ein von Horner (Horner, William Georg 1786 – 1837) und schon vorher von Ruffini (Ruffini, Paolo 1765 – 1822) gegebenes Schema zur Berechnung der Funktionswerte. DV1_Kapitel_2.doc Seite 2-9 von 18 Rüdiger Siol 12.09.2009 16:27 Hochschule Ravensburg-Weingarten Fakultät Technologie und Management Informationsverarbeitung Vorlesung zur Datenverarbeitung 1 Zahlensysteme 2.2.2.2.2 Anwendung des Hornerschemas zur Konvertierung Wir haben gesehen, dass jede Zahl eines beliebigen Zahlensystems sich als Polynom darstellen lässt in der Form: n a= ∑z B i i i= −m n € Wenn wir da mit der eben besprochenen Funktion y = ∑ ai x i vergleichen sieht man i= 0 unmittelbar, dass sich B und x entsprechen. Nur vereinfacht sich alles, da B nur die Werte entsprechend der Basis der Zahlensysteme haben kann und für die ganzzahligen Koeffizienten gilt 0 ≤ zi < B. Man muss sich nur noch daran gewöhnen, dass die Anwendung des € Hornerschemas zur Konvertierung z.B. von Dualzahlen ins Dezimalsystem furchtbar einfach wird. Beispiel: Die Dualzahl 100111002 soll in eine Dezimalzahl umgewandelt werden. 1 0 0 1 1 1 0 B=2 2*1 2*2 2*4 2*9 2*19 2*39 1 2 4 9 19 39 78 0 2*78 156 Wenn wir nun z.B. die Regel zur Konvertierung von Dualzahlen in Oktal- bzw. Hexadezimalzahlen anwenden, so sieht man, dass die Dualzahl 100111002 der Oktalzahl 2348 entspricht und wir können unser Hornerschema erneut anwenden: 2 3 B=8 8*2 2 19 4 8*19 156 Das ging jetzt deutlich schneller und führt (natürlich) zum selben Ergebnis. Machen wir das ganze jetzt noch für die entsprechende Hexadezimalzahl, denn es entspricht der Dualzahl 100111002 die Hexadezimalzahl 9C16. 9 B=16 C 16*9 9 156 Das ging jetzt noch schneller, ist aber unpraktisch weil wir es nicht gewohnt sind, im Hexadezimalsystem zu rechnen. DV1_Kapitel_2.doc Seite 2-10 von 18 Rüdiger Siol 12.09.2009 16:27 Hochschule Ravensburg-Weingarten Fakultät Technologie und Management Informationsverarbeitung Vorlesung zur Datenverarbeitung 1 Zahlensysteme 2.2.2.3 Konvertierung von Dezimalzahlen in Dual-, Oktal- bzw. Hexadezimalzahlen Für die Konvertierung vom Dezimal- in eines der anderen Systeme gelten für den ganzen und den gebrochenen Teil der Dezimalzahl folgende Algorithmen4: a.) Ganzer Teil: Ist G die ganze Zahl im Dezimalsystem, dann gilt für das Zahlensystem mit der Basis B das Bildungsgesetz: n G = ∑ zi B i ∀(n ≥ 0) i= 0 Dividiert man G durch B, so erhält man einen ganzzahligen Teil (die Summe) und einen Rest: € n € G z = ∑ zi B i−1 + 0 B i=1 B Dabei nimmt z0 die Werte 0,1,…,B-1 an und ist die niederwertige Ziffer des Zahlensystems. Wendet man das Verfahren jetzt auf die abgespaltete Summe wiederholt an, so ergeben sich die weiteren Ziffern. € b.) Gebrochener Teil: Ist g ein echter Dezimalbruch, so lautet die Vorschrift in die Konvertierung in das Zahlensystem mit der Basis B jetzt: m g * B = z−1 + ∑ z−i B−i+1 i= 2 Die wiederholte Anwendung auf die entstehenden Summen liefert die Werte € z−1,z−2 ,… 2.2.2.3.1 Die Dezimalzahl 27 soll im Dualsystem5 dargestellt werden. € Dividend 27 13 6 3 1 : : : : : Divisor 2 2 2 2 2 = = = = = Quotient Rest 13 1 6 1 3 0 1 1 0 1 Wertigkeit 0 1 2 3 4 4 In der Datenverarbeitung und Informatik ist ein Algorithmus allgemein eine in einer geeigneten formalisierten Sprache angegebene Folge von exakten Arbeitsanweisungen (Rechenanweisungen) an einen Computer, durch die der Lösungsweg eines mathematischen Problems in endlich vielen ausführbaren elementaren Verarbeitungsschritten eindeutig beschrieben wird. Für derartige algorithmische Programmierungen von Rechenprozessen geeignete formalisierte Sprachen sind ALGOL, FORTRAN, PASCAL, C, C++ u.a. 5 Die Begriffe Dualsystem, Binärsystem, dyadisches System sind Synonym. DV1_Kapitel_2.doc Seite 2-11 von 18 Rüdiger Siol 12.09.2009 16:27 Hochschule Ravensburg-Weingarten Fakultät Technologie und Management Informationsverarbeitung Vorlesung zur Datenverarbeitung 1 Zahlensysteme Es ist also: 27(10) = 2 *101 + 7 *10 0 = 1* 2 4 + 1* 2 3 + 0 * 2 2 + 1* 21 + 1* 2 0 = 11011( 2) Gegeben war also eine Zahl im Dezimalsystem und ermittelt wurden die Ziffern im Dualsystem. Der Algorithmus ist auf jedes Zahlensystem anwendbar; dann muss er auch auf € das Dezimalsystem anwendbar sein und wir erhalten: Dividend Divisor Quotient Rest 27 : 10 = 2 7 2 : 10 = 0 2 Wertigkeit 0 1 Es ist also: 27(10) = 2 *101 + 7 *10 0 ein Ergebnis das natürlich trivial erscheint weil wir die Ziffern in diesem dezimalen Stellenwertsystem sehen und wissen, dass es nun mal so definiert ist. Ein Programm in einer € Rechenanlage „sieht“ das allerdings nicht; der Algorithmus wäre also immer anzuwenden, auch wenn er uns trivial erscheint. DV1_Kapitel_2.doc Seite 2-12 von 18 Rüdiger Siol 12.09.2009 16:27 Hochschule Ravensburg-Weingarten Fakultät Technologie und Management Informationsverarbeitung Vorlesung zur Datenverarbeitung 1 Zahlensysteme 2.2.2.3.2 Die Dezimalzahl 0,0033125 soll im Dualsystem dargestellt werden 0,0033125 0,006625 0,01325 0,0265 0,053 0,106 0,212 0,424 0,848 0,696 0,392 0,784 * * * * * * * * * * * * 2 2 2 2 2 2 2 2 2 2 2 2 = = = = = = = = = = = = 0,006625 0,01325 0,0265 0,053 0,106 0,212 0,424 0,848 1,696 1,392 0,784 1,568 0 0 0 0 0 0 0 0 1 1 0 1 Wertigkeit -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 0,0033125 0,0265 0,212 0,696 0,568 0,544 0,352 0,816 0,528 0,224 0,792 0,336 * * * * * * * * * * * * 8 8 8 8 8 8 8 8 8 8 8 8 = = = = = = = = = = = = 0,0265 0,212 1,696 5,568 4,544 4,352 2,816 6,528 4,224 1,792 6,336 2,688 0 0 1 5 4 4 2 6 4 1 6 2 Wertigkeit -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 Im Dualsystem gilt: 0,0033125(10) = 0,000000001101(2) wobei ein Fehler <= 2-12 auftritt wegen der begrenzten Stellenzahl. Im Oktalsystem gilt: 0,0033125(10) = 0,001544264162(8) wobei ein Fehler <= 8-12 auftritt wegen der begrenzten Stellenzahl. Man beachte, dass man nach dem gleichen Verfahren auch die Ziffern im Dezimalsystem ermitteln könnte; nur erscheint das natürlich überflüssig, da man diese ja sowieso sieht; in einem Programm ist der Algorithmus erforderlich da es die Ziffern eben nicht „sieht“. DV1_Kapitel_2.doc Seite 2-13 von 18 Rüdiger Siol 12.09.2009 16:27 Hochschule Ravensburg-Weingarten Fakultät Technologie und Management Informationsverarbeitung Vorlesung zur Datenverarbeitung 1 Zahlensysteme Zahlendarstellung im Computer6 Dies beschränkt sich auf die ZahlendarsteIlung in Digitalrechnern. Das Speichermedium eines Computers ist in Speicherplätze oder Speicherwörter eingeteilt, von denen jedes mit einer Adresse versehen ist. Jedes Speicherwort ist selbst wieder in sogenannte Bits (binary digits) unterteilt und jedes Bit kann genau zwei Zustände annehmen. Die Anzahl der Bits pro Wort heißt Wortlänge. Die Wortlänge schwankt von Computer zu Computer zwischen 8 und 96 Bit. Zur Speicherung von Zahlen (und auch Instruktionen, Texten) stehen die Speicherwörter zur Verfügung. Da jedes Bit eines Wortes genau zwei Zustände annehmen kann, ist die unmittelbare Beziehung zum Dualsystem mit seinen zwei Ziffern evident. Es wird jede der beiden Dualziffern 0,1 durch einen der beiden möglichen Zustände eines Bits repräsentiert. Bei der Zahldarstellung im Speicher des Computers hat man zwei Methoden zu unterscheiden: 2.2.3 Festkommadarstellung (Festpunktdarstellung) und Gleitkommadarstellung (Gleitpunktdarstellung). Bei beiden wollen wir annehmen, dass die Wortlänge des Computers gleich n ist. In vielen Computern ist es dann auch möglich, mehrere Wörter zusammenzufassen zu einem neuen "Wort", wodurch die Anzahl der darstellbaren Zahlen erhöht werden kann (zweifache, dreifache Wortlänge). Dabei entstehen aber keine prinzipiellen Unterschiede. Der Zahlenbereich eines Rechenautomaten ist die Menge aller Zahlen zwischen einer endlichen oberen und einer endlichen unteren Grenze, die ein (Zahl-)Register eines Rechenautomaten aufnehmen kann. Auf ein Überschreiten dieses Bereichs, einen sogenannten Überlauf, reagiert der Rechenautomat in angemessener Weise. Ein Skalenfaktor ist ein Faktor mit dem eine reelle Zahl zu multiplizieren ist, damit sie in einen vorgeschriebenen Zahlenbereich fällt. Bei der Festkommadarstellung ist neben der Wortlänge schon von der Rechenanlage her auch die Stellung des "Dualpunktes" (in der Dualdarstellung entsprechend dem Dezimalpunkt) fixiert7. Von der Wortlänge n entfällt so 1 Bit auf das Vorzeichen der Zahl, n1 Bits stehen für die Stellen vor dem Komma der Dualzahl und n2 Bits für die Stellen nach dem Komma der Dualzahl zur Verfügung, wobei n1 + n2 = n - 1 ist und jedes Bit eine der Dualziffern der darzustellenden Zahl aufnimmt. n-1 , Vorzeichen n1 n2 6 Willibald Dörfler, Werner Peschek; Einführung in die Mathematik für Informatiker; Carl Hanser Verlag München Wien (1988); ISBN 3-446-15112-5 7 Das gilt dann immer; würde man zulassen, dass das Komma (der Punkt) immer an anderer Stelle steht ergäbe sich eine sehr komplizierte und aufwendige Logik. DV1_Kapitel_2.doc Seite 2-14 von 18 Rüdiger Siol 12.09.2009 16:27 Hochschule Ravensburg-Weingarten Fakultät Technologie und Management Informationsverarbeitung Vorlesung zur Datenverarbeitung 1 Zahlensysteme 2.2.3.1 Festpunktzahlen Der Wertebereich der positiven Festpunktzahlen mit den angegebenen Parametern ergibt sich zu 0 ≤ a ≤ 2 n −1 Festpunktzahlen können in nachfolgender Form dargestellt werden: € Dualzahl (n-1 Bits) Vorzeichen v der Festpunktzahl Zur Darstellung ganzer Zahlen wird die Festkommadarstellung mit n2 = 0 verwendet, im kaufmännischen Bereich wird eine solche mit n2 = 2 verwendet. Beschränkt man die Festkommadarstellung auf ganze Zahlen, so kann man alle ganzen Zahlen von −2 n−1 bis (2n−1 −1) exakt darstellen; größere oder kleinere Zahlen sind nicht erfassbar, und sollte im Laufe einer Rechnung eine solche auftreten, so wird dies (hoffentlich) von der Anlage an den Benutzer gemeldet. € € Eine andere Zahlendarstellung basiert darauf, dass man mittels 4 Bits sechzehn verschiedene Zeichen binär (dual) verschlüsseln kann, also etwa die Zahlen 0 bis 15. Diese kann man aber als die Ziffern des Hexadezimalsystems (Basis 16) ansehen, wobei für 10,11,12,13,14,15 die Symbole A, B, C, D, E, F geschrieben werden. Eine Zahl im System mit Basis 16 lässt sich dann durch eine entsprechende Folge von 4-BitGruppen im Speicher repräsentieren. Welcher Zahlenbereich insgesamt darstellbar ist, hängt wieder von der Wortlänge ab, wobei diese üblicherweise ein Vielfaches von 8 ist. Ist z.B. die Wortlänge 32, so hat man 8 4-Bit-Gruppen zur Verfügung. Reserviert man das 1-te Bit der ersten Gruppe für das Vorzeichen, so ist die größte darstellbare Zahl 7 F F F F F F F16. Natürlich kann man mit dieser Methode nicht mehr Zahlen darstellen als bei direkter binärer Speicherung. DV1_Kapitel_2.doc Seite 2-15 von 18 Rüdiger Siol 12.09.2009 16:27 Hochschule Ravensburg-Weingarten Fakultät Technologie und Management Informationsverarbeitung Vorlesung zur Datenverarbeitung 1 Zahlensysteme 2.2.3.2 Gleitpunktzahlen im IEEE-Standard Die heute übliche Form der Gleitpunktdarstellung entspricht dem 1985 verabschiedeten IEEE-Standard8. Diese befasst sich mit der Normung der Rechnerarithmetik und enthält Festlegungen zu den Formaten, dem Rundungsverhalten, den arithmetischen Operatoren, der Konvertierung von Zahlenwerten, zu Vergleichsoperatoren und zur Behandlung von Ausnahmefällen wie Bereichsüberschreitungen. Dort wird für die Gleitpunktzahl folgende Form festgelegt: 1 Charakteristik C = E + K 11 Mantisse M 52 … … Vorzeichen v der Gleitpunktzahl (d.h. Vorzeichen der Mantisse) Die Charakteristik C wird aus dem Exponenten E durch Addition einer geeigneten Konstanten K gebildet. Diese wird so gewählt, dass für die Charakteristik nur positive Werte auftreten. Die darstellbare Zahl lautet: v a = (−1) * 2 E *1.b1b2 …bt−1 mit E = C – K Dabei gilt: Cmin = 1, Cmax = 254; C = 0 und C = 255 sind reserviert; d.h. K = 128. € Der Standard gibt zwei Basisformate vor (einfach- und doppelt-genaue Gleitpunktzahlen), lässt aber auch erweiterte Formate zu. Im Gegensatz zur Darstellung ganzer Zahlen verwendet man zur Darstellung von reellen Zahlen meistens die Gleitkommadarstellung . Wir gehen wieder von einer festen Wortlänge n aus und bemerken zu allererst, dass im Computer nur endlich viele Zahlen exakt darstellbar sind (sie werden Maschinenzahlen genannt). Für alle anderen (überhaupt darstellbaren) Zahlen, insbesondere für alle Zahlen mit unendlichen Dezimal- (Dual- ) Brüchen kommt daher nur eine näherungsweise Darstellung in Frage. Die Gleitkommadarstellung beruht auf der Tatsache, dass sich jede reelle Zahl a in der Form a = b *10 e oder a = c *2f mit b <1 c <1 e,f ganze Zahlen darstellen lässt. Diese Darstellung heißt auch die halblogarithmische Darstellung von a; b € bzw. c heißen die Mantisse € und e bzw. f der Exponent der Darstellung. € 8 IEEE – Institute of Electrical and Electronics Engineers. DV1_Kapitel_2.doc Seite 2-16 von 18 Rüdiger Siol 12.09.2009 16:27 Hochschule Ravensburg-Weingarten Fakultät Technologie und Management Informationsverarbeitung Vorlesung zur Datenverarbeitung 1 Zahlensysteme Beispiel Wir schreiben nebeneinander die übliche Form (Dezimaldarstellung) und die halblogarithmische Form für einige Zahlen: 3,5261 −890012,35 0,0001925 0,35261*101 −0,89001235 *10 6 0,1925 *10−3 Im Beispiel haben wir bereits die sogenannte Normalisierung der Mantisse vorweggenommen: Man vereinbart, dass in der Mantisse stets die erste Stelle nach dem € € sein muss. Dadurch wird die halblogarithmische Darstellung Komma von Null verschieden einer reellen Zahl eindeutig und diese Normalform ist auch platzsparend, da die führenden Nullen kürzer im Exponenten angegeben werden. Die Darstellung einer Zahl im Computer erfolgt nun prinzipiell so, dass eine bestimmte Anzahl der n Bits eines Wortes zur Darstellung der (normalisierten) Mantisse, ein Bit für das Vorzeichen und die restlichen Bits für den Exponenten der halblogarithmischen Darstellung zur Verfügung stehen. Da das Dualsystem verwendet wird, hat man die darzustellende reelle Zahl a in die Form a = c * 2 f zu bringen. Dies geschieht am einfachsten dadurch, dass man a (in Dezimalform) solange durch 2 dividiert oder mit 2 multipliziert, bis man eine Zahl d erhält mit 1/2 <= d < 1. Die Anzahl der nötigen Divisionen ist der positive Exponent, die Anzahl der Multiplikationen der negative € Exponent. Ist dieser Exponent f, so ist dann a = d * 2f. Beispiel Es sei a = 14,618; man dividiert fortlaufend durch 2 und erhält: 7,309; 3,6545; 1,82725; 0,913625 = d; f = 4. Also ist 14,618 = 0,913625 * 24. Nun werden die normalisierte Mantisse d und der Exponent f getrennt in Dualzahlen verwandelt, wobei die Mantisse in Dualdarstellung wegen d >= 1/2 wieder normalisiert ist. Die so erhaltenen Dualzahlen für Mantisse und Exponent werden auf den entsprechenden Bits des Wortes gespeichert. Da für die Mantisse nur endlich viele Bits zur Verfügung stehen, entsteht bei der Darstellung jeder Zahl, deren Mantisse d mehr Stellen als verfügbare Bits hat (insbesondere also jede irrationale Zahl), notwendigerweise ein Fehler. Ist m die Anzahl der DualsteIlen (Bits) für die Mantisse, so ist der Fehler kleiner als 2-(m-1). Natürlich ist auch der Exponent durch die Anzahl der dafür reservierten Bits beschränkt. Statt des Exponenten wird meistens die sogenannte Charakteristik verwendet, die die Speicherung des Vorzeichens des Exponenten vermeidet. Die Charakteristik entsteht aus dem Exponenten f durch Addition einer (maschinenabhängigen) festen Zahl f0, so dass f + f0 >= 0 ist. Stehen etwa zur Speicherung des Exponenten 7 Bits zur Verfügung, so wählt man f0 = 64, denn der kleinste darstellbare Exponent ist -64 = - 26. Durch die Anzahl der Bits für die Charakteristik wird offensichtlich die größte bzw. kleinste in der Maschine darstellbare Zahl festgelegt. Demgegenüber legt die verfügbare Länge der Mantisse die Genauigkeit der ZahlendarsteIlung fest. DV1_Kapitel_2.doc Seite 2-17 von 18 Rüdiger Siol 12.09.2009 16:27 Hochschule Ravensburg-Weingarten Fakultät Technologie und Management Informationsverarbeitung Vorlesung zur Datenverarbeitung 1 Zahlensysteme Abschließend sollen noch einige Bemerkungen auf die Problematik der Rechenoperationen mit Zahlen in Gleitkommadarstellung hinweisen. Zunächst ist schon durch die Darstellung ein Fehler bedingt, der sich bei der weiteren Verarbeitung im allgemeinen vergrößern wird. Zusätzliche Fehler entstehen direkt durch die Rechenoperationen. Bei der Addition wird häufig im Resultat eine Linksverschiebung des Dualpunktes und dadurch eventuell der Verlust einer oder mehrerer Stellen am Ende der Mantisse notwendig sein. Auch kann sowohl bei Addition als auch Multiplikation Überlauf eintreten dadurch, dass der Exponent zu groß wird. Die Multiplikation zweier n-stelliger Mantissen ergibt entweder 2n oder 2n – 1 Stellen, so dass auch hier "abgeschnitten" werden muss , was erneut einen Genauigkeitsverlust bedingt. In vielen Anlagen werden diese Fehler durch Einrichtungen zum Runden der Zahlen etwas verkleinert. Besonders fehlerhaft kann sich die Subtraktion zweier beinahe gleich großer Zahlen auswirken. Ist etwa a1 = 0,32183 * 10-4 und a2 = 0,32151 * 10-4, so ist a1 – a2 = 0,00032 * 10-4. Dieses Resultat wird aber mit normalisierter Mantisse als 0.32000 *10−7 gespeichert. War also früher die 4. oder 5. Stelle der Mantisse mit einem Fehler behaftet, so ist es jetzt die erste oder zweite, was weit größere Auswirkungen im weiteren Verlauf der Rechnung haben kann. Schließlich erwähnen wir, dass in der "Gleitkommaarithmetik" die üblichen Gesetze des € Rechnens mit reellen Zahlen wie Distributiv- oder Assoziativgesetz nicht erfüllt sind. Denn Rundungen sind im allgemeinen von der Reihenfolge der durchgeführten Rechenoperationen abhängig. Für die Gleitkommaarithmetik kann man genaue Fehlerabschätzungen durchführen. DV1_Kapitel_2.doc Seite 2-18 von 18 Rüdiger Siol 12.09.2009 16:27