16
RW-Systemarchite ktur Kap. 2 Kapitel 2 Kodierung 2.1 Kodierung von Zeichen 2.2 Kodierung von Zahlen

Kapitel 2 Kodierung 2.1 Kodierung von Zeichen 2.2 Kodierung von Zahlen

Embed Size (px)

Citation preview

Page 1: Kapitel 2 Kodierung 2.1 Kodierung von Zeichen 2.2 Kodierung von Zahlen

RW-Systemarchitektur Kap. 2

Kapitel 2

Kodierung

2.1 Kodierung von Zeichen2.2 Kodierung von Zahlen

Page 2: Kapitel 2 Kodierung 2.1 Kodierung von Zeichen 2.2 Kodierung von Zahlen

RW-Systemarchitektur Kap. 2 2

Motivation Ein Rechner speichert, verarbeitet und produziert

Informationen. Alle Ergebnisse müssen als Funktion der Anfangswerte exakt

reproduzierbar sein. Informationsspeicherung und Verarbeitung müssen exakt sein.

Probleme: Noise, Crosstalk, Abschwächung Es gibt keine exakte Datenübertragung oder Datenspeicherung Ziel: Quantisierung der Informationsspeicherung mit Signal groß

gegenüber maximaler Störung

Binär-Codierung (nur zwei Zustände) ist die einfachste (und sicherste) Signal-Quantisierung.

BIT (0, 1) als grundlegende Informationseinheit

Page 3: Kapitel 2 Kodierung 2.1 Kodierung von Zeichen 2.2 Kodierung von Zahlen

RW-Systemarchitektur Kap. 2 3

Motivation

Ein Rechner kann traditionell

Zeichen verarbeiten (Textverarbeitung), mit Zahlen rechnen, Bilder, Audio- und Videoinformationen

verarbeiten und darstellen …

Ein Algorithmus kann zwar prinzipiell mit abstrakten Objekten verschiedener Art operieren, aber diese müssen im Rechner letztendlich als Folgen von Bits repräsentiert werden.

Kodierung!

Page 4: Kapitel 2 Kodierung 2.1 Kodierung von Zeichen 2.2 Kodierung von Zahlen

RW-Systemarchitektur Kap. 2 4

2.1 Kodierung von Zeichen

Wie werden im Rechner Zeichen dargestellt ?

„Längenoptimale Kodierungen“ von Zeichen: Häufigkeitscodes (Bsp.: Huffman-Code)

fehlererkennende und fehlerkorrigierende Codes (Bsp.: Parity-Check, Hamming-Code)

Page 5: Kapitel 2 Kodierung 2.1 Kodierung von Zeichen 2.2 Kodierung von Zahlen

RW-Systemarchitektur Kap. 2 5

Alphabete und Wörter

Definition:

Eine nichtleere Menge A = {a1, ..., am} heißt (endliches) Alphabet der Größe m. a1, ..., am heißen Zeichen des Alphabets.

A* = {w| w=b1 ... bn mit n, i mit 1in : biA} ist die Menge aller Wörter über dem Alphabet A.|b1 ... bn| := n heißt Länge des Wortes b ... bn.Das Wort der Länge 0 wird mit bezeichnet.

Beispiel:

Sei A = {a, b, c, d}. Dann ist bcada ein Wort der Länge 5 über A.

Page 6: Kapitel 2 Kodierung 2.1 Kodierung von Zeichen 2.2 Kodierung von Zahlen

RW-Systemarchitektur Kap. 2 6

Code

Sei A={a1,...,am} ein endliches Alphabet der Größe m.

Eine Abbildung c : A {0,1}* oder c : A {0,1}n heißt CodeCode, falls c injektiv ist.

Die Menge c (A) := { w{0,1}* | a A : c (a)=w } heißt Menge der CodewörterCodewörter.

Ein Code c : A {0,1}n heißt Code fester LängeCode fester Länge.

Für einen Code c : A {0,1}n fester Länge gilt: n log2 m.

Ist n log2 m +r mit r so können die r zusätzlichen Bits zum

Test auf ÜbertragungsfehlerÜbertragungsfehler verwendet werden (siehe später).

Page 7: Kapitel 2 Kodierung 2.1 Kodierung von Zeichen 2.2 Kodierung von Zahlen

RW-Systemarchitektur Kap. 2 7

7-Bit-ASCIIAmerican Standard Code for Information Interchange

ASCII ist ein Code fester Länge zur Kodierung von Zeichen in einem Rechner.

Die Codelänge beträgt 7.

Es gibt auch andere vergleichbare Codes, wie z.B. EBDIC (8 Bit) oder UniCode (16 Bit).

Page 8: Kapitel 2 Kodierung 2.1 Kodierung von Zeichen 2.2 Kodierung von Zahlen

RW-Systemarchitektur Kap. 2 8

7-bit-ASCII: Code-Tabelle

Problem: Umlaute,Sonderzeichen verschiedener Nationalitäten Erweiterung auf 8 Bit(oder 16 Bit im Fall von Unicode)

000

001

010

011

100

101

110

111

0000 nul dle 0 @ P ` p

0001 soh dc1 ! 1 A Q a q

0010 sfx dc2 " 2 B R b r

0011 etx dc3 # 3 C S c s

0100 eot dc4 $ 4 D T d t

0101 enq nak % 5 E U e u

0110 ack syn & 6 F V f v

0111 bel etb ' 7 G W g w

1000 bs can ( 8 H X h x

1001 ht em ) 9 I Y i y

1010 lf sub * : J Z j z

1011 vt esc + ; K [ k {

1100 ff fs , < L \ l |

1101 cr qs - = M ] m }

1110 so rs . > N ^ n *

1111 si us / ? O _ o del

erste 3 Bitserste 3 Bits

letz

te 4

Bit

sle

tzte

4 B

its

SchriftzeichenSchriftzeichenSteuerzeichenSteuerzeichen

Page 9: Kapitel 2 Kodierung 2.1 Kodierung von Zeichen 2.2 Kodierung von Zahlen

RW-Systemarchitektur Kap. 2 9

Bis zur Einführung des Laserdruckers waren Drucker zeilenorientiert.

Die ASCII-Steuerzeichen wurden benutzt, um Drucker zu steuern.

Bsp.: CR: Wagenrücklauf LF: Zeilenvorschub

CR und LF sind bis heute die Zeilentrennzeichen in Textdateien (aber nicht einheitlich).

Bedeutung von ASCII-SteuerzeichenAbk. Funktion Funktion (Bedeutung des Zeichens)NUL Null Nichtiges (ungültiges) ZeichenSOH Start of heading Beginn des Kopfes (Titels)STX Start of text TextanfangETX End of text TextendeEOT End of transmission Ende der ÜbertragungENQ Enquiry AnfrageACK Acknowledgement EmpfangsbestätigungBEL Audible signal Akustisches SignalBS Backspace RücksetzenHT Horizontal tabulation Horizontale Einstellung (Tabulator)LF Line feed ZeilenvorschubVT Vertical tabulation Vertikale Einstellung (Tabulator)FF Form feed FormularvorschubCR Carriage return SchreibkopfrücklaufSO Shift out Umschaltung aus (Kleinschreibung)SI Shift in Umschaltung ein (Großschreibung)DLE Data link escape Umschaltung von Text auf SteuerzeichenDC1-3 Device control EinheitensteuerungDC4 Device stop EinheitenhaltNAK Negative acknowledgement Negative EmpfangsbestätigungSYN Synchronous idle Synchronisierzeichen (Leerlauf)ETB End of transmission block Ende eines ÜbertragungsblockesCAN Cancel AufhebungEM End of medium Ende für ein Medium (Gerät)SS Start of special sequence Beginn einer speziellen FolgeESC Escape Auswahl, Trennung, UmschaltungFS File separator DateitrennzeichenGS Group separator GruppentrennzeichenRS Record separator SatztrennzeichenUS Unit separator Trennzeichen für eine InformationseinheitSP Space ZwischenraumDEL Delete/Idle Löschen/ Leerlauf

Page 10: Kapitel 2 Kodierung 2.1 Kodierung von Zeichen 2.2 Kodierung von Zahlen

RW-Systemarchitektur Kap. 2 10

Häufigkeitsabhängige Codes

ZielZiel Reduktion der Länge einer Nachricht durch Wahl verschieden langer Codewörter für die verschiedenen Zeichen eines Alphabets (also kein Code fester Länge!)

IdeeIdee Häufiges Zeichen kurzer Code Seltenes Zeichen langer Code

VoraussetzungenVoraussetzungen Häufigkeitsverteilung ist bekannt statische Kompressionstatische Kompression Häufigkeitsverteilung nicht bekannt dynamische dynamische KompressionKompression

Page 11: Kapitel 2 Kodierung 2.1 Kodierung von Zeichen 2.2 Kodierung von Zahlen

RW-Systemarchitektur Kap. 2

Zeichen a b c d e f g h i j

Häufigkeit [%] 20 25 15 8 7 6 5 5 5 4

11

Häufigkeitsabhängige Codes: Huffman

bekanntester häufigkeitsabhängiger Code

BeispielBeispiel

Baue binären Baum, indem die Knoten mit den beiden kleinsten Häufigkeiten unter einen neuen Knoten mit der Summe der Häufigkeiten gehängt werden

91013

17

32

23

43

57

100

Markiere die linken Kanten mit 0und die rechten Kanten mit 1, fertig ist der Huffman-Code!

Page 12: Kapitel 2 Kodierung 2.1 Kodierung von Zeichen 2.2 Kodierung von Zahlen

RW-Systemarchitektur Kap. 2

a b c d e f g h i j

00 10 110 1110 0100 0101 0110 0111 11110 11111

Erzeugte CodierungErzeugte Codierung

12

Huffman-Code

91013

17

32

23

43

57

100

0

0

00

000

0

0 11

111

11

1

1

Zeichen a b c d e f g h i j

Häufigkeit [%] 20 25 15 8 7 6 5 5 5 4

Page 13: Kapitel 2 Kodierung 2.1 Kodierung von Zeichen 2.2 Kodierung von Zahlen

RW-Systemarchitektur Kap. 2 13

Huffman-Code

91013

17

32

23

43

57

100

0

0

00

000

0

0 11

111

11

1

1

Zeichen a b c d e f g h i j

Häufigkeit [%] 20 25 15 8 7 6 5 5 5 4

Dekodierung: Dekodierung: (1)(1) Lesen des Bitstromes (und gleichzeitiges Durchlaufen des Lesen des Bitstromes (und gleichzeitiges Durchlaufen des

binären Baumes) bis Code für das Symbol erkanntbinären Baumes) bis Code für das Symbol erkannt(2)(2) Erkanntes Symbol ausgeben und weiter mit (1)Erkanntes Symbol ausgeben und weiter mit (1)

Page 14: Kapitel 2 Kodierung 2.1 Kodierung von Zeichen 2.2 Kodierung von Zahlen

RW-Systemarchitektur Kap. 2 14

PräfixcodesDefinition:Sei A = {a1, …, am}.

a1 … ap A* heißt Präfix von b1 … bl A*, falls p l und ai = bi 1 i p.

Ein Code c : A {0, 1}* heißt präfixfreier Code, falls es kein Paar i, j {1, …, m} gibt, so dass c(ai) Präfix von c(aj).

Bemerkung: Der Huffman-Code ist ein Präfixcode. Bei Präfixcodes können Wörter über {0, 1} eindeutig dekodiert

werden. (Sie entsprechen Binärbäumen mit Codewörtern an den Blättern.)

Huffman-Code ist ein bzgl. mittlerer Codelänge optimaler Präfixcode (unter Voraussetzung einer bekannten Häufigkeitsverteilung).

Page 15: Kapitel 2 Kodierung 2.1 Kodierung von Zeichen 2.2 Kodierung von Zahlen

RW-Systemarchitektur Kap. 2 15

Überblick: Fehlererkennende und fehlerkorrigierende Codes

Motivation

Fehlererkennende Codes Allgemeine Resultate Bsp. für 1-fehlererkennenden Code: Parity-Code

Fehlerkorrigierende Codes Allgemeine Resultate Bsp. für 1-fehlerkorrigierenden Code: Hamming-

Code

Page 16: Kapitel 2 Kodierung 2.1 Kodierung von Zeichen 2.2 Kodierung von Zahlen

RW-Systemarchitektur Kap. 2 16

Motivation: Übertragungsfehler Ein ÜbertragungsfehlerÜbertragungsfehler (Abspeicherungsfehler) eines

Wortes aus {0, 1}* liegt vor, wenn die empfangene Bitfolge verschieden von der gesendeten Bitfolge ist.

Übertragungsfehler = Kippen von BitstellenKippen von Bitstellen (0 1, 1 0) Übertragungsfehler erhöhen die (Hamming-)Distanz

dist(v,w) zwischen der gesendeten Bitfolge v und der empfangenen Bitfolge w, wobei man unter der Distanz Distanz zweier gleich langer Bitfolgenzweier gleich langer Bitfolgen die Anzahl der Stellen versteht, an denen sich die beiden Bitfolgen unterscheiden.

Beispiel:Beispiel:

dist(00001101,10001100) = 2

dist(00001101,00001101) = 0 Ein Übertragungsfehler heißt einfacheinfach, wenn dist(v,w)=1 gilt.