6. Digitale Datendarstellung Daten repräsentieren Informationen über die reale Welt im Rechner Sie sind die fundamentalen Objekte, die im Rechner gespeichert, verarbeitet und wieder ausgegeben werden können Unterschiedliche Typen von Daten werden in unterschiedlichen Datenstrukturen repräsentiert: Einfache Datenstrukturen: numerisch: natürliche Zahlen, ganze Zahlen, rationale Zahlen, ... symbolisch: Zeichenketten (strings), Zusammengesetzte Datenstrukturen: Mengen, Listen, Bäume, ... Sammlungen von Datensätzen (Dateien)
Codierung Daten werden als Zeichenketten (Wörter) dargestellt. Die Menge der in den Zeichenketten vorkommenden Symbole heißt Alphabet. bekannte Beispiele: {a,b,c,...,A,B,C, ...}, {0,1,...,9}, {0,1} Sei ein Alphabet. * bezeichnet die Menge aller endlichen Zeichenketten, die aus gebildet werden können (einschließlich der leeren Kette). Mit k-elementigem Alphabet lassen sich k Wörter der Länge n erzeugen. Seien und Alphabete. Eine Codierung (von in ist eine injektive Abbildung c: *--> *. Eine Binärcodierung ist eine Codierung, bei der || = 2 ist (oft = {0,1}). Vorteil: einfache physikalische Realisierungsmöglichkeit (Spannung ja/nein, Magnetisierung positiv/negativ, Loch ja/nein, ...) Für analoge Daten Diskretisierung (Rasterung) erforderlich n
Binärcodierung von Texten Codiert werden Groß-, Kleinbuchstaben, Ziffern, Satzzeichen, Sonderzeichen Verbreitetster Standard: ASCII (American Standard Code for Information Interchange) bzw. erweiterter ASCII (8 Bits) Auszug aus Code-Tabelle: 00110000 00110001 00111001 01000001 01000010 01011010 01011011 01100001 01100010 01111010 48 49 57 65 66 90 91 97 98 122 Symbol ASCII dezimal 1 9 A B Z [ a b z
Natürliche Zahlen Stellenwertcodierung: zu jeder natürlichen Zahl n und jeder Basis b gibt es genau eine Folge xk xk^-1... x2 x1, so daß xk ≠ 0 und k n = xi b i i=0 Bemerkung: falls Ziffern 0,...,9 nicht für Basis ausreichen, weitere Symbole nötig, üblicherweise A,B,C,... Beispiele: 114 = 1110010 = 72 10 2 16 2F = 47 = 101111 16 10 2
Konvertierungen von n in Basis b Methode 1: identifiziere größte Potenz b von b, die kleiner als n ist. Dividiere n durch b , den Rest durch b usw. bis b . Die Divisionsergebnisse ergeben die gesuchte Ziffernfolge von links nach rechts. i i i-1 Methode 2: dividiere n sowie die jeweils entstehenden Ergebnisse fortlaufend durch Basis b. Die dabei entstehenden Reste ergeben die gesuchte Ziffernfolge von rechts nach links.
Rechnen mit Dualzahlen Beispiele 0 • 0 = 0 1 • 0 = 0 0 • 1 = 0 1 • 1 = 1 0 + 0 = 0 1 + 0 = 1 0 + 1 = 1 1 + 1 = 0 (Ü = 1) 10110 + 101 11011 10110 • 101 1011000 000000 10110 1101110 Subtraktion durch stellenweise Komplementbildung und Addition: 1011 - 0101 = 1011 + 1010 + 1 - 10000 = 0101 + 1 = 0110 11 - 5 = 11 + 10 + 1 - 16 = 5 + 1 = 6 Warum funktioniert das? Sei x n-stellig. Zu berechnen x - y. Sei y das Komplement von y. y + y = 1...1 = 2 - 1. Also: n n n x - y = x - [2 - 1 - y] = x + y + 1 - 2
Darstellung ganzer Zahlen (Datentyp Integer) positive und negative Zahlen durch Vorzeichenbit unterschieden (0 = +, 1 = -) darstellbar: - (2 ) + 1 bis 2 - 1. n-1 n-1 Beispiel: n = 4 0000 = +0 0001 = +1 0010 = +2 0011 = +3 0100 = +4 0101 = +5 0110 = +6 0111 = +7 1000 = -0 1001 = -1 1010 = -2 1011 = -3 1100 = -4 1101 = -5 1110 = -6 1111 = -7 Nachteile: 0 zweimal repräsentiert, Rechenoperationen komplizierter ==> (Zweier-) Komplementdarstellung
Komplementdarstellung -z repräsentiert durch 2 - z (entspricht Stellenkomplement + 1). Vorzeichen durch erstes Bit bestimmt. Binäre Ziffernfolge xn-1 xn-2 ... x1 x0 repräsentiert: n-1 n-2 xn-1 • (- 2 ) + xn-2 • 2 + ... + x1 • 2 + x0 darstellbar: - (2 ) bis 2 - 1. n-1 n-1 Beispiel: n = 4 0000 = +0 0001 = +1 0010 = +2 0011 = +3 0100 = +4 0101 = +5 0110 = +6 0111 = +7 1000 = -8 1001 = -7 1010 = -6 1011 = -5 1100 = -4 1101 = -3 1110 = -2 1111 = -1 Vorteil: Addition negativer Zahlen wie für natürliche Zahlen
Rationale Zahlen yi b n Mit n Bits nur 2 Werte exakt darstellbar, daher müssen alle anderen rationalen Zahlen durch benachbarten Wert approximiert werden. Jede nichtnegative rationale Zahl kann eindeutig in einen ganzzahligen Anteil z1 1 und gebrochenen Anteil 0 z2 < 1 zerlegt werden, so daß z = z1 + z2. Festpunktdarstellung für z im Stellenwertsystem mit n = k + m Stellen und Basis b: xk-1 xk-2 ... x1 x0.y1 ... ym steht für Konversion analog zu ganzen Zahlen: k-1 m z = xi b + i yi b -i i=0 i=1 1.1011 = 1 + 1/2 + 1/8 + 1/16 2
Gleit- oder Fließpunktdarstellung: Datentyp REAL Halblogarithmische Zahlendarstellung sinnvoll vor allem bei sehr großen und sehr kleinen Zahlen. Gleitpunktzahl besteht aus Mantisse und Exponent Darstellung im IEEE-Standard (Short Real): 1 8 23 v c m v c-127 x = (-1) • 2 • 1.m Darstellung der 0: c = 0, m = 0 kleinste positive Zahl: 2 (ca. 1.2 • 10 ) größte positive Zahl: (2 - 2 ) • 2 (ca. 3.4 • 10 ) Genauigkeit etwa 7 Dezimalstellen -126 -38 -23 38 128
Ein Beispiel 0 1 0 0 0 0 1 0 1 0 0 0 1 1 0 0 1 1 1 0 1 0 0 1 1 1 1 1 1 1 0 0 Exponent: 133 - 127 = 6 Mantisse: 1 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 = 1.1008906 -4 -5 -8 -9 -10 -12 -15 -16 -17 -18 -19 -20 -21 Vorzeichen 0: positive Zahl Wert der Gleitkommazahl in Dezimaldarstellung: +1.1008906 • 64 = 70.457
Bemerkungen Es ist einer Bitfolge nicht anzusehen, ob sie ASCII-Zeichen, ganze Zahl, Gleitpunktzahl, Programmbefehl oder etwas anderes ist Interpretation abhängig vom Kontext Auch Graphiken, Bilder, Filme, Töne etc. lassen sich digitalisieren Dazu meist Diskretisierung analoger Daten erforderlich. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Rasterung für Praxis wohl etwas zu grob :-)