Informatik 1 für Nebenfachstudierende Grundmodul Datendarstellung Teil 2 Kai-Steffen Hielscher Folienversion: 08. November 2016 Informatik 7 Rechnernetze und Kommunikationssysteme
Inhaltsübersicht Kapitel 1 - Einführung und Übersicht Was ist Informatik? Grundbegriffe Datendarstellung Hardware von Computersystemen Grundsoftware üblicher Computersysteme Inf1NF 2
Addition im Binärsystem Übertrag bei Addition von Dualzahlen Bei Addition von Dualzahlen entsteht ein Übertrag, wenn das Ergebnis > 1 ist. 1. Zahl 2. Zahl Summe Übertrag 0 0 0 + 0 = 0 0 0 1 0 + 1 = 1 0 1 0 1 + 0 = 1 0 1 1 1 + 1 = 0 1 Inf1NF 3
Addition im Binärsystem Stellenweise Addition mit Übertrag Zwei aus mehreren Ziffern bestehende Dualzahlen werden ganz analog zur Addition von Dezimalzahlen addiert (Addition des Übertrags zur nächsthöherwertigen Position) Beispiel: 42 + 111 = 153 1 0 1 0 1 0 + 1 1 1 0 1 1 1 1 1 1 1 = 1 0 0 1 1 0 0 1 Dezimalsystem Binärsystem Inf1NF 4
Wiederholung: Zahlendarstellung im Rechner Die Vorzeichendarstellung kann durch ein Vorzeichenbit gelöst werden, das an den Anfang oder das Ende eines Worts gestellt ist. Eine 0 bedeutet z.b. ein positives, eine 1 ein negatives Vorzeichen. Bei der Tetradendarstellung wird dementsprechend eine Tetrade (= 4 Bit) für das Vorzeichen reserviert. Inf1NF 5
Wiederholung: Vorzeichendarstellung Darstellung ganzer Zahlen Ganze Zahlen ::= Natürliche Zahlen + Negative ( nat. ) Zahlen { -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, } Kodierung des absoluten Zahlenwertes und Vorzeichen + bzw. -, d.h. für diese 2 Möglichkeiten genau 1 weiteres Bit Information nötig sogen. Vorzeichendarstellung: Erstes Bit für Vorzeichen: 0 für "+" und 1 für "-" weitere Bits für den Absolutwert Beispiel: Wortlänge sei 4 Bit Ein Bit für Vorzeichen Drei Bit für den Absolutwert Zahlen von -7 bis +7 darstellbar ± Z = ± Absolutwert Vorzeichen Absolutwert Inf1NF 6
Vorzeichendarstellung Darstellung ganzer Zahlen: Wortlänge sei 4 Bit 0111 = +7 1111 = -7 0110 = +6 1110 = -6 0101 = +5 1101 = -5 0100 = +4 1100 = -4 0011 = +3 1011 = -3 0010 = +2 1010 = -2 0001 = +1 1001 = -1 0000 = +0 1000 = -0 Man erkennt folgende Nachteile: Zahl 0 durch zwei verschiedene Bitfolgen dargestellt Inf1NF 7
Vorzeichendarstellung Addition problematisch: 0111 = +7 1111 = -7 0110 = +6 1110 = -6 0101 = +5 1101 = -5 0100 = +4 1100 = -4 0011 = +3 1011 = -3 0010 = +2 1010 = -2 0001 = +1 1001 = -1 0000 = +0 1000 = -0 Fehler! = +0, nicht +2-3 + +5 = +2 1011 + 0101 = 0000 Inf1NF 8
Zahlendarstellung im Rechner Frage: Existiert Bit-Darstellung für (negative) ganze Zahlen, so daß Addition zweier ganzer Zahlen immer korrekt ist? -3 + +5 = +2???? + 0101 = 0010 welche Bitfolge für "-3"? Lösung: Zweierkomplement -3 + +5 = +2 1101 + 0101 = 0010 Bitfolge "1101" für "-3". Bitfolge 1101 (-3) ist Zweierkomplement zu 0011 (+3). Inf1NF 9
Komplementdarstellung Das Komplement einer Folge von Nullen und Einsen erhält man, indem man stellenweise negiert, jede 0 durch 1 und jede 1 durch 0 ersetzt. Bei der Darstellung ganzer Zahlen zur Basis B unterscheidet man zwischen dem B-Komplement und dem (B-1)-Komplement einer Zahl. Das B-Komplement der Zahl Z ist definiert als diejenige Zahl Ż, für die die Beziehung Z + Ż = B n gilt (n ist gleich der Länge der Darstellung von Z). Das (B-1)-Komplement von Z ist diejenige Zahl Ż für die Z + Ż = B n -1 ist. Das 1er-Komplement erhält man bei Binärzahlen, indem man Stelle für Stelle negiert, d.h. 1 durch 0 und 0 durch 1 ersetzt. Das 2er-Komplement erhält man, indem man das 1er- Komplement bildet und zum Ergebnis 1 addiert. Inf1NF 10
Komplementdarstellung Beispiele: (B=2, n = 4, Z = 1011) 1er-Komplement von Z: Ż = 0100 2er-Komplement von Z: Ż = 0101 Die Komplementbildung wird bei der Durchführung arithmetischer Operationen auf Digitalrechnern verwendet. Die Subtraktion zweier Zahlen a und b realisiert man durch die Addition von a mit dem 2er-Komplement von b. Da eine Rechenanlage eine feste Wortlänge besitzt, können nur endlich viele verschiedene Zahlen, z.b. 0 bis 2 8-1 = 255 dargestellt werden. Inf1NF 11
Komplementdarstellung Um auch negative Zahlen verarbeiten zu können, hat man bei der Komplementdarstellung folgende Konvention vereinbart: Sei n die Wortlänge. Von den 2 n verschiedenen Zuständen der Speicherzellen definiert man 0, 1,, 2 n-1-1 als Darstellungen für positive Zahlen und 2 n-1, 2 n-1 +1,..., 2 n -1 als Darstellungen für die negativen Zahlen -2 n-1, -2 n-1 +1,..., -1. Inf1NF 12
Komplementdarstellung Die Bezeichnung Komplementdarstellung rührt daher, dass man durch Bildung des 2er-Komplements aus der Zahldarstellung von x die Zahldarstellung von -x erhält. Ob eine Zahl positiv oder negativ ist, erkennt man am ersten Bit der Zahldarstellung: Bei positiven Zahlen besitzt dieses Bit den Wert 0, bei negativen den Wert 1. Beispiel: (n = 8, darstellbare Zahlen: -128 bis 127) Größte darstellbare Zahl: 0 1 1 1 1 1 1 1 + 127 Kleinste darstellbare Zahl: 1 0 0 0 0 0 0 0-128 1 1 1 1 1 1 1 1-1 0 1 1 0 0 0 0 1 + 97 1 0 0 1 1 1 1 1-97 Inf1NF 13
Darstellung von Gleitkommazahlen Bei der Gleitkommadarstellung wird neben der Ziffernfolge zusätzlich die Größenordnung mit Hilfe eines Exponenten formuliert Beispiele: (0.00015) 10 = 0.15 * 10-3 (325000.0) 10 = 0.325 * 10 6 Eine Gleitkommazahl Z ist definiert durch Z = M * B E und M mit M < 1 heißt Mantisse, B ist die Basis des Zahlensystems und E ist der Exponent. Damit die Gleitkommadarstellung eindeutig ist muss die Mantisse in Normalform vorliegen, d.h. die erste Stelle muss von Null verschieden sein. Mantisse und Exponent besitzen jeweils ein Vorzeichen. Um beim Exponenten das Vorzeichen einzusparen, wird oft eine positive Charakteristik C verwendet, die durch Addition einer Konstanten K entsteht: C = E + K Z = M * B C-K Inf1NF 14
Darstellung von Gleitkommazahlen Beispiele: Es gebe 2 Stellen für die Charakteristik C, d.h. 0 C 99, so dass mit K=50 für E der Darstellungsbereich -50 E +49 vorliegt. Z = +0.478 * 10-3 M = +4780000, E = -03, C = 47 Z = +0.5137201 * 10 5 M = +5137201, E = +05, C = 55 Z = -0.31438 * 10 2 M = -3143800, E = +02, C = 52 Darstellung einer Dezimalzahl im dualen Dezimalcode (BCD- Code, Binary Coded Decimals): Z = +0.654 * 10-12 Z = (0 0110 0101 0100 0011 1000) BCD + 6 5 4 3 8 mit M = +654 und C = 38. Inf1NF 15
Gleitkommaarithmetik Addition: Gegeben: Z 1 = (M 1,C 1 ) und Z 2 = (M 2,C 2 ); gesucht: Z = Z 1 + Z 2 = (M,C) Gilt C 1 = C 2 = C dann werden die Mantissen M 1 und M 2 einfach addiert. Andernfalls muss die kleinere Mantisse um so viele Stellen nach rechts verschoben werden, wie es der Betrag C 1 - C 2 definiert. Führt die Addition von M 1 und M 2 zu M 1, muss eine zusätzliche Normalisierung erfolgen: dabei wird M um eine Stelle nach rechts geschoben und die Charakteristik C um 1 erhöht. Beispiel: (0.219) 10 * 10-4 + (0.501) 10 * 10-2 (Mantissenlänge: 3) Für K=50 gilt: M 1 = 219, C 1 = 46, M 2 = 501 und C 2 = 48 Die Charakteristik des 1. Summanden ist um C 1 - C 2 = 2 kleiner, seine Mantisse wird daher um 2 Stellen nach rechts geschoben M 1_neu = 002, C 1_neu = C 2 = 48 M = M 1_neu + M 2 = 002 + 501 = 503, C = 48 Z = (0,503 ) 10 * 10-2 Damit ist bei der Angleichung von C 1 und C 2 wegen der beschränkten Mantissenlänge von 3 Dezimalstellen ein Stellenverlust aufgetreten. Inf1NF 16
Gleitkommaarithmetik Beispiel: Genauigkeitsverlust wegen Normalisierung Wegen der begrenzten Mantissenlänge von 3 wurde die Ziffer 7 abgeschnitten. Besser wäre eine arithmetische Rundung : (111,49) 0.111 * 10-1! Inf1NF 17
Gleitkommaarithmetik Subtraktion: Subtraktion ist die Addition zweier Zahlen mit ungleichen Vorzeichen. Beispiel: Standarddarstellung Gleitpunktdarstellung (M/C) Anpassung von Mantisse und Charakteristik Inf1NF 18
Gleitkommaarithmetik Multiplikation: Man multipliziert die Mantissen und addiert die Exponenten bzw. die Charakteristiken, d.h. M = M 1 * M 2 E = E 1 + E 2 C = C 1 + C 2 - K Gegebenenfalls ist anschließend zu normalisieren, d.h. Linksshift der Mantisse um 1 Stelle und Dekrementierung (Wert um 1 verkleinern) der Charakteristik. Division: Man dividiert die Mantissen und subtrahiert die Exponenten bzw. die Charakteristiken, d.h. M = M 1 / M 2 E = E 1 - E 2 C = C 1 - C 2 + K Auch bei der Division kann eine Normalisierung notwendig werden, d.h. Rechtsshift der Mantisse um 1 Stelle und Inkrementierung (Wert um 1 vergrößern) der Charakteristik. Inf1NF 19
Numerische Effekte Folgende Fehlermöglichkeiten und Problemfälle wurden bereits in den Beispielen veranschaulicht: beschränkte Genauigkeit durch endliche Wortlänge Konvertierungsfehler durch die Transformation vom Dezimalsystem ins Dualsystem und zurück Stellenverlust bedingt durch das Angleichen der Charakteristik (durch Verschieben der Mantisse gehen rechtsbündig Stellen verloren) Normalisierung kann zum Abschneiden einer Stelle bzw. zur Rundung führen Es kann auch passieren, dass Operationen gar nicht ausführbar sind, weil das Ergebnis außerhalb des zulässigen Zahlenbereichs liegen würde. Additionsüberlauf: Statt der Charakteristik wird jetzt der Exponent -49 E +49 verwendet: Inf1NF 20
Numerische Effekte Weitere Fehlersituationen sind der Divisionsüberlauf Multiplikationsüberlauf Multiplikationsunterlauf Divisionsunterlauf Entsteht zur Laufzeit eines Programms einer der obigen Fehler, führt das zum Programmabbruch, und eine Fehlermeldung wie exponent overflow bzw. exponent underflow wird ausgegeben. Auch das Inkrementieren, also die sukzessive Addition von 1 kann zu einer Fehlersituation führen solange wir mit Gleitpunkzahlen arbeiten. Beispiel: Ein Rechner habe eine Gleitkommaarithmetik mit 6-stelliger Mantisse, jede Stelle verschlüsselt durch eine Tetrade, und einen Exponentenbereich von -49 E +49. Die größte darstellbare Zahl ist 0.999999 * 10 49. Diese Zahl ist durch einfaches Inkrementieren nicht erreichbar: Inf1NF 21
Numerische Effekte Die zu addierende 1 wird durch die Angleichung rechts vergessen, und die Inkrementierung bleibt bei 0.1 * 10 7 stehen! Da der Rechner hier keine Fehlermeldung oder Warnung produziert, können besonders unangenehme, nicht unmittelbar erkennbare Fehler auftreten! Fazit: bei der Interpretation von Ergebnisdaten ist Vorsicht geboten, es sollte immer eine Plausibilitätsbetrachtung durchgeführt werden und bei besonders wichtigen Zwischenergebnissen alternative Berechnungen zur mehrheitlichen Bestätigung der Korrektheit der numerischen Berechnungen erfolgen. Beispiel Raumfähre: 3-aus-5-Mehrheitsentscheidung! Inf1NF 22
Standardzahlenformate Für praktische Zwecke kann ein Computer immer nur mit einem endlichen Teilbereich der ganzen Zahlen umgehen. Die Größe des benötigten Bereiches richtet sich nach der Anwendung. In den meisten Programmiersprachen gibt es mehrere ganzzahlige Datentypen mit unterschiedlichen Wertebereichen. Je größer der zur Verfügung gestellte Bereich ist, um so mehr Bits werden zur Darstellung eines jeden Wertes aus diesem Bereich benötigt. Dies ist immer ein Vielfaches von 8 (Wortlänge des Computers), da ein Byte die kleinste Gruppe von Bits ist, die ein Rechner verarbeiten kann. Durch die Wahl eines genügend großen Bereiches muss der Programmierer dafür sorgen, dass der Bereich nicht überschritten wird. Die folgende Tabelle zeigt die Bereiche und ihre Namen, wie sie beispielsweise von der Programmiersprache Java bereitgestellt werden zusammen mit der Größe die für die Speicherung einer Zahl benötigt wird. Inf1NF 23
Standardzahlenformate Ganze Zahlen Gleitpunktzahlen Inf1NF 24
Daten und Informationen Daten sind Bitfolgen. Findet man Daten, lässt sich noch keine Information daraus extrahieren. Eine Folge von Bits oder Bytes hat für sich genommen keine Bedeutung. Erst wenn man weiß, wie diese Bytes zu interpretieren sind, erschließt sich deren Bedeutung und damit eine Information. Betrachten wir etwa die Bitfolge 0100 0100 0110 0101 0111 0010 0010 0000 0100 0010 0110 0001 0110 1100 0110 1100 0010 0000 0110 1001 0111 0011 0111 0100 0010 0000 0111 0010 0111 0101 0110 1110 0110 0100 0010 1110 Interpretation als Folge von Hexadezimal-Ziffern liefert: 44 65 72 20 42 61 6C 6C 20 69 73 74 20 72 75 6E 64 2E Interpretation als Folge von 1-Byte-Zahlen, im Bereich -128... 127 liefert: 68 101 114 32... Interpretation als Folge von 2-Byte-Zahlen liefert: 17509 29216 16993 Interpretation als ASCII-Zeichenfolge liefert:??? Inf1NF 25
Daten und Informationen Wir halten also fest: die Bedeutung von Daten erschließt sich erst durch die Kenntnis der benutzten Repräsentation. Die Interpretation von Daten nennt man, wie wir wissen, Abstraktion. Mit einem Rechner kann man Daten lesen und verändern, z.b. Lesen von Daten Verknüpfung von Daten anhand arithmetischer oder logischer Operationen Speichern von veränderten Daten auf einem externen Medium. Information wird also durch Daten repräsentiert. Wenn wir Information verarbeiten wollen, müssen wir die informations-verarbeitenden Operationen durch Operationen auf den entsprechenden Daten nachbilden. Informationsverarbeitung bedeutet demnach, dass Information zunächst auf Daten abgebildet wird, diese Daten verändert werden und aus den entstandenen Daten die neue Information abstrahiert wird. Das folgende Diagramm fasst das gesagte noch einmal zusammen: Inf1NF 26
Daten und Informationen Information Repräsentation Abstraktion Daten Inf1NF 27