Codierung 1a Definitionen: Alphabet: Ein Alphabet A ist eine endliche Menge von Symbolen (Zeichen) Wort: Ein Wort über dem Alphabet A ist eine endliche Folge von Elementen der Menge A Wortmenge: Sprache: Die Wortmenge A* ist die Menge aller Wörter über dem Alphabet A Für die Sprache L über dem Alphabet A muß gelten L <= A* Beispiele: A={#} A* = { #, ##, ###, #####, ####### ..............} L1 = {##, ####, ######,...} Sprache aller Wörter mit geradzahliger Symbolzahl L2 = {###, #####} Endliche Sprache mit nur zwei Worten A = {a, b, c} A* = { a, b, c, aa, ab, ac, ba, bb, bc, ca, cb, cc, aaa.......} L = { aa, bb, cc, aaa, aab, aac, aba, aca, baa, caa…} Sprache aller Wörter über A, die mindestens zwei gleiche Buchstaben enthalten. Codierung Seite 1 Codierung 1b Codierung: Zuordnung eines Alphabets A, das zur Darstellung bestimmter Informationen dient, zu Alphabeten A1, A2, mit denen dieselbe Information dargestellt werden kann. Der umgekehrte Vorgang hießt Decodierung. Code: (Nach DIN 44300) Eine Vorschrift für die eindeutige Zuordnung der Zeichen eines Zeichenvorrates zu denjenigen eines anderen Zeichenvorrates. Zwei Fälle sind zu unterscheiden: Beide Alphabete haben die gleiche Anzahl von Zeichen. Codierung ist damit ein einfaches Zuordnungsproblem. Die Zahl der Zeichen in den Alphabeten ist unterschiedlich. Die Zeichen des Alphabets mit der geringeren Anzahl müssen mehrfach verwendet werden. Die Unterschiede werden durch zeitliches Nacheinander oder räumliches Nebeneinander deutlich gemacht. Ziele: Codierung Leichte Codierung und Decodierung Kompakte Speicherung Fehlersicherheit Arithmetikfreundlichkeit Seite 2 Codierung 2a Codierung Seite 3 Codierung 2b Codierung Seite 4 Codierung 3 Codierung Seite 5 Codierung 4 Codierung Seite 6 Codierung 5 Codierung Seite 7 Codierung 6 Codierung Seite 8 Codierung 7 Binärcodes für Dezimalzahlen Zwei Gesichtspunkte sind für die Wahl eines Codes wichtig: Die Arithmetik soll für die codierten Zahlen möglichst einfach sein Das Verändern der Bitmuster (z. B. bei Übertragung, Bitverlust) soll festgestellt werden können. BCD-, Aiken-, und 3-Exzeß-Code 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 BCDCode 0 1 2 3 4 5 6 7 8 9 Pseudotetraden AikenCode 0 1 2 3 4 Pseudo- tetraden _______ 5 6 7 8 9 3-ExzeßCode Pseudo_______ 0 1 2 3 4 5 6 7 8 9 tetraden Die Wichtigkeit der Bits in der Tetrade ist bei dem BCD-Code von links nach rechts 8 4 2 1, bei dem Aiken-Code 2 4 2 1. (Der Aiken-Code ist für einige Ziffern mehrdeutig). Ermitteln Sie eine Addionsregel für Zahlen, dargestellt im BCD-Code und im Aiken-Code. Codierung Seite 9 Codierung 8 Beispiele für Addition BCD-Code 34 +58 0011 0100 0101 1000 _________ 1000 1100 0000 0110 _________ =92 1001 0010 ======== 47 +16 0100 0111 0001 0110 _________ 0101 1101 0000 0110 _________ 0110 0011 ======== =63 38 +18 =56 0011 1000 0001 1000 _________ 0101 0000 0000 0110 _________ 0101 0110 ======== Aiken-Code (2421-Wertigkeit) 34 +58 =92 47 +16 =63 0011 0100 1011 1110 ________ 1111 0010 ======== 0100 1101 0001 1100 _________ 0110 1001 38 +18 +56 0011 1110 0001 1110 _________ 0101 1100 ======== 1100 0011 Hinweis auf Doppeldeutigkeit Codierung Seite 10 Codierung 9 HAMMING-Distanz d zweier n-bit langer Worte gibt an, an wieviel Stellen sich bei einem Vergleich die Worte w1 und w2 unterscheiden. W1 = 1000 1001 W2 = 1010 1011 --------------------* * Unter HAMMING-Distanz D eines Codes versteht man den kleinsten auftretenden Abstand dmin unter allen zugelassenen Worten. Bei einer HAMMING-Distanz > = 2 ist eine Fehlererkennung möglich. HAMMING-DISTANZ = 2 Einzelfehlererkennung HAMMING-DISTANZ = 3 Doppelfehlererkennung Einzelfehlerkorrektur ... Bestimmen Sie die HAMMING-Distanz folgender Codeworte: 100 010 001 111 Längssummenkontrolle, Längsparität Ein Informationsblock wird um ein oder mehrere Codeworte verlängert. Im einfachsten Fall erfolgt die Bildung eines Wortes aus Paritätsbits. Beispiel: 00101110 11011010 00011010 11011010 00000100 11110000 00000000 11110000 1 0 0 0 0 1 1 1 ungerade Querparität 11011111 1 ungerade Längsparität Eine (begrenzte) Korrektur von Fehlern ist möglich. Diese Methode wird insbesondere bei Speicherung auf Magnetbändern benutzt. Codierung Seite 11