04 Codierung
04 Codierung
4.1 Einführung
4.2 Blockcodes
4.3 Codes variierender Länge
4.4 Komprimierende Codes
4.5 Fehlererkennende und -korrigierende Codes
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4-1
Quellen
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4-2
4.1 Einführung
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4-3
Weitere Begriffe
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4-4
Ziele von Codierungen
• Funktionalität
─ Repräsentationssysteme zur Speicherung, Verarbeitung und
Übertragung von Information
─ Umkehrbarkeit (Decodierbarkeit)
─ Ordnungserhaltung nach Codierung (z.B. für Sortierung)
─ Änderung an nur einer Stelle beim Übergang zum nächsten
Zahlenwert (Korrektheit bei Messwerterfassung)
• Effizienz
─ übersichtliche und wenig aufwändige Codierungsfunktion
─ einfache und wirtschaftliche Verarbeitung in der neuen
Repräsentierung
─ einfache Komplementbildung (für Arithmetik)
─ einfache Realisierung arithmetischer Operationen
─ möglichst kurze Codewörter; Reduktion von Speicherbedarf,
Übertragungszeit, Energiekosten usw.
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4-5
Ziele von Codierungen (2)
• Effizienz (Forts.)
─ Beispiele:
Codierung und Arithmetik ganzer Zahlen (vgl. Kap. 3.3)
UTF-8-Codierung von Unicode-Zeichen (vgl. Kap. 3.4.6)
• Sicherung gegen Verfälschung
─ Fehler können zu Veränderungen der Repräsentierung von
Information während der Speicherung und Übertragung führen
(Störung) !
─ Erkennen von Fehlern in "geringfügig" gestörten Codewörtern
─ Erkennen von Verarbeitungsfehlern
─ automatische Korrektur fehlerhafter Codewörter ohne
Informationsverlust (korrekte Decodierung)
─ Maßnahmen konkurrieren mit Effizienz
• Geheimhaltung von Information
─ Verschlüsselung (kryptographische Methoden)
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4-6
Codebaum
0 1 b3
Codewörter
( b3 b2 b1 b0 )2
als Pfade
von der Wurzel 0 1 0 b2
zu den Blättern
0 1 0 1 0 b1
0 1 0 1 0 1 0 1 0 1
b0
Klarzeichen
0 1 2 3 4 5 6 7 8 9
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4-7
4.2 Blockcodes
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4-8
Beispiele
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4-9
Gewichtete Codes
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 10
Beispiele: gewichtete BCD-Codes
üblicher 51111-
BCD-Code Code
Wi 23 22 21 20 5 1 1 1 1
0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 0 1
2 0 0 1 0 0 0 0 1 1
3 0 0 1 1 0 0 1 1 1
4 0 1 0 0 0 1 1 1 1
5 0 1 0 1 1 0 0 0 0
6 0 1 1 0 1 1 0 0 0
7 0 1 1 1 1 1 1 0 0
8 1 0 0 0 1 1 1 1 0
9 1 0 0 1 1 1 1 1 1
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 11
Beispiele: gewichtete BCD-Codes (2)
Aiken-
Code
Wi 2 4 2 1
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 12
Beispiele: gewichtete BCD-Codes (3)
2-aus-5-
Code
Wi 7 4 2 1 0
0 1 1 0 0 0
─ bis auf die Null monoton
1 0 0 0 1 1
2 0 0 1 0 1 wachsend
3 0 0 1 1 0 ─ fehlererkennend
4 0 1 0 0 1 (für alle 1-Bit-Fehler)
5 0 1 0 1 0
6 0 1 1 0 0 ─ Einsatz: Strichcode
7 1 0 0 0 1 (5 Striche: 3 schmal, 2 breit)
8 1 0 0 1 0 (Postleitzahlencodierung)
9 1 0 1 0 0
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 13
Beispiele: gewichtete BCD-Codes (4)
1-aus-10-
Ring-Code
Wi 9876543210
0 0000000001
─ monoton wachsend
1 0000000010
2 0000000100 ─ sehr übersichtlich
3 0000001000
─ großer Aufwand
4 0000010000
5 0000100000 ─ Einsatz: Anzeigen, numerische
6 0001000000 Tastaturen
7 0010000000
8 0100000000
9 1000000000
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 14
Gray-Code
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 15
Beispiele
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 16
Bildung des n-stelligen Gray-Codes
• Bildungsgesetz (rekursiv):
─ 0 und 1 werden mit den Dualzahlen 0 und 1 codiert.
─ Wenn eine neue Stelle gebraucht wird, wird sie mit 1 besetzt.
In den folgenden Stellen wird die bisherige Codierung rückwärts
(gespiegelt) aufgeschrieben: 0
1
2
3
0 4 Spiegel-
1 5 achse
0 2 6
0 1 3 7
1 2 4 8
3 5 9
6 10
7 11
12
Erweiterung 13
Spiegelung
14
15 ...
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 17
Blockcodes für spezielle Aufgaben
0 1 1 1 1 1 1 0
a 1 0 1 1 0 0 0 0
2 1 1 0 1 1 0 1
f g b 3 1 1 1 1 0 0 1
4 0 1 1 0 0 1 1
e c 5 1 0 1 1 0 1 1
6 1 0 1 1 1 1 1
7 1 1 1 0 0 0 0
d 8 1 1 1 1 1 1 1
9 1 1 1 1 0 1 1
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 18
4.3 Codes variierender Länge
Ziffer Code
1 LO
2 LLO
3 LLLO
4 LLLLO
5 LLLLLO
6 LLLLLLO
7 LLLLLLLO
8 LLLLLLLLO
9 LLLLLLLLLO
0 LLLLLLLLLLO
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 19
Codes variierender Länge in Rechensystemen
• Beispiele:
─ Codierung von Maschinenbefehlen
z.B. 2, 4 oder 6 Bytes lange Befehle in IBM /360-Architektur
Bit-variabel lange Befehle im Prozessor Intel iAPX 432
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 20
Beispiel: Morse-Code
ꔷ –
e t
ꔷ –
ꔷ –
i a n m ꔷ kurz
ꔷ – ꔷ –
ꔷ –
ꔷ – – lang
s u r w d k g o
ꔷ –
ꔷ – ꔷ – ꔷ – ꔷ –
ꔷ – ꔷ –
ꔷ –
h v f ue l ae p j b x c y z q oe ch
Häufig vorkommende Schriftzeichen besitzen kurze Codewörter.
Zur korrekten Decodierung wurde zur Trennung der Codewörter
ein drittes Codezeichen "Pause" (⎕) eingeführt.
Beispiel:
ꔷ– :a ꔷ ⎕ – :e t ꔷ ⎕ ꔷ ꔷ ⎕ – – ⎕ ꔷ ⎕ ꔷ – ꔷ ⎕ : e i m e r
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 21
Fano-Bedingung
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 22
Beispiel
0 1
Huffman-
Code für das 0 1 0 1
englische
Alphabet als 0 1
0 1 0 1 0 1
präfixfreier
Binär-Code 1 0 E 0 1 0 1 0 1
0 1 T 0 1
variierender
Länge 0 1 0 1 0 1 H S 0 1 I R N 0 1 O A
0 1 0 1
Y G U M C F L D
0 1
B W P
0 1 V
0 1 0 1
0 1
1 0 0 1 0 1 0 0 0 0 1 1 1 0 0 1 0 1 1 J X K
E I M E R Z Q
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 23
Beispiel (2)
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 24
4.4 Komprimierende Codes
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 25
Lauflängenkodierung
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 26
Lauflängenkodierung (2)
• Beispiel:
─ Marker: #
─ "ABBBBBBBCDEEEEEEEEEEEF#34777777" (31 Zeichen)
─ komprimiert: "AB#7CDE#11F##347#6" (18 Zeichen)
• Anwendungsspezialfall: Null-Unterdrückung
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 27
Wörterbuchkompression (Lempel-Ziv)
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 28
Beispiel
• Eingabe: AAABAABAABAAABB...
1 A A A B A A B A A B A A A B B ...
2 A A A B A A B A A B A A A B B ...
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 29
Beispiel (2)
3 A A A B A A B A A B A A A B B ...
4 A A A B A A B A A B A A A B B ...
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 30
Beispiel (3)
5 A A A B A A B A A B A A A B B ...
6 A A A B A A B A A B A A A B B ...
...
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 31
Häufigkeitsabhängige Codierungen
• Annahmen:
─ A = { a1, a2, ..., am }.
─ Die relative Häufigkeit pi jedes Zeichens ai∈A in w sei bekannt.
─ Abhängigkeiten zwischen Zeichen werden nicht betrachtet, d.h.: zu
jedem Zeitpunkt entspricht die Wahrscheinlichkeit für ein neu zu
kodierendes Zeichen genau der relativen Häufigkeit pi des Zeichens
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 32
Häufigkeitsabhängige Codierungen (2)
• Aufgabe:
Gesucht ist ein Binärcode c:A→{0,1}* zur Codierung von w∈A*,
sodass die Gesamtlänge L = |c(w)| des codierten Wortes
minimal ist.
• Idee:
─ Häufiger vorkommende Zeichen werden durch kurze Codewörter
dargestellt, weniger wahrscheinliche durch längere.
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 33
Anmerkung
ist zu
Division durch N liefert: minimieren
m
!
dl = L/N = Σ pl i i = min
i=1
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 34
Huffman-Codierung
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 35
Beispiel
• A = { a, b, c, d, e, f }
• Gegebene relative Häufigkeiten:
(0.1, 0.15, 0.25, 0.05, 0.2, 0.25)
• Entwicklung des Codebaums:
0.1 0.15 0.25 0.05 0.2 0.25
0 Anfangszustand
a b c d e f
a d
0.3
0 1 0.25 0.2 0.25
Auswahl
2 c e f nicht eindeutig
0 1 b
a d
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 36
Beispiel (2)
a d
4 0.55 0.45
1 0 1
0 1 f c e
0 1 b
a d
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 37
Beispiel (3)
1
5 0 1
0 1 0 1
endgültiger Codebaum
0 1 f c e
0 1 b
a d
• Bestimmung der mittleren Codewortlänge:
Zeichen ai a b c d e f
Rel. Häufigkeit pi 0.1 0.15 0.25 0.05 0.2 0.25
Codewort c(ai) 0000 001 10 0001 11 01
Codewort-Länge li 4 3 2 4 2 2
• Bei Wahl der anderen Alternative am Ende von Schritt 2 hätte sich
der folgende Codebaum ergeben :
1
0 1
0 1 0 1
0 1 c e f
0 1 b
a d
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 39
Shannon/Fano-Codierung
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 40
Beispiel
• A = { a, b, c, d, e, f }
• Gegebene relative Häufigkeiten: (0.1, 0.15, 0.25, 0.05, 0.2, 0.25)
• Entwicklung des Codebaums:
0 1
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 41
Beispiel (2)
1
2 0.1 0.15 0.25 0.05 0.2 0.25
a b c d e f
0 1
0.5 0.5
0.1 0.15 0.25 0.05 0.2 0.25
a b c d e f
0 1
0.25 0.25
0.1 0.15
c
a b
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 42
Beispiel (3)
1
3 0.1 0.15 0.25 0.05 0.2 0.25
a b c d e f
0 1
0.5 0.5
0.1 0.15 0.25 0.05 0.2 0.25
a b c d e f
0 1
0.25 0.25
0.1 0.15
c
a b
0 1
0.1 0.15
a b
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 43
Beispiel (4)
1
4 0.1 0.15 0.25 0.05 0.2 0.25
a b c d e f
0 1
0.5 0.5
0.1 0.15 0.25 0.05 0.2 0.25
a b c d e f
0 1 0 1
0.25 0.25 0.25 0.25
0.1 0.15 0.05 0.2
c f
a b d e
0 1
0.1 0.15
a b
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 44
Beispiel (5)
1
5 0.1 0.15 0.25 0.05 0.2 0.25
a b c d e f
0 1
0.5 0.5
0.1 0.15 0.25 0.05 0.2 0.25
a b c d e f
0 1 0 1
0.25 0.25 0.25 0.25
0.1 0.15 0.05 0.2
c f
a b d e
0 1 0 1
0.1 0.15 0.05 0.2
a b d e
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 45
Beispiel (6)
• Endgültiger Codebaum:
0 1
0 1 0 1
0 1 c 0 1 f
a b d e
Zeichen ai a b c d e f
Rel. Häufigkeit pi 0.1 0.15 0.25 0.05 0.2 0.25
Codewort c(ai) 000 001 01 100 101 11
Codewort-Länge li 3 3 2 3 3 2
⇨ mittl. Codewortlänge dl = 0.3 + 0.45 + 0.5 + 0.15 + 0.6 + 0.5 = 2.5 Bit
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 46
Anmerkungen
Formal kann dann der Begriff der Code-Redundanz R als R = dl - H bzw. der
relativen Code-Redundanz r als r = R / dl = 1 - H/dl eingeführt werden.
─ dass sich jede Nachrichtenquelle so codieren lässt, dass die Redundanz des
Codes beliebig klein wird.
• Komprimierende Codes verkleinern also die Code-Redundanz.
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 47
Anmerkungen (2)
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 48
Anwendungsbeispiel
• Fax-Komprimierung CCITT T4
─ Das Scannen eines Seite führt zu Zeilen aus 1728 einzelnen schwar-
zen und weißen Punkten (Pixeln) (bei 3,85 oder 7,7 Zeilen/mm (fein)).
─ Für jede Bildzeile werden die Längen der Folgen von schwarzen und
weißen Pixeln bestimmt (Lauflängenbestimmung).
─ Die Zahlenfolge wird durch speziellen Huffman-Code komprimiert:
weiß: Länge Codewort schwarz: Länge Codewort
0 00110101 0 0000110111
1 000111 1 010
2 0111 2 11
3 1000 3 10
4 1011 4 011
5 1100 5 0011
6 1110 6 0010
7 1111 7 00011
8 10011 8 000101
9 10100 9 000100
10 00111 10 0000100
11 01000 11 0000101
12 001000 12 0000111
.... ....
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 49
Nicht verlustfreie Codierungen
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 50
4.5 Fehlererkennende und -korrigierende Codes
Überblick
1. Einführung
2. Fehlererkennende Codes
3. Fehlerkorrigierende Codes
4. Zyklische Codes zur Fehlererkennung
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 51
4.5.1 Einführung
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 52
Beispiele
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 53
Redundanz
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 54
Konsequenzen bei der Decodierung
─ keine Störung
→ fehlerfreie Decodierung
─ "geringe" Störung →
Decodierung der ursprünglichen Nachricht ist möglich,
der aufgetretene Fehler wird maskiert (d.h. tritt nach außen nicht in
Erscheinung).
─ "stärkere" Störung →
Decodierung der ursprünglichen Nachricht ist nicht möglich,
aber Vorhandensein eines Fehlers wird erkannt.
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 55
Hamming-Gewicht, Hamming-Abstand
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 56
Hamming-Abstand von Codes
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 57
4.5.2 Fehlererkennende Codes
• Satz:
Hat ein Code den Hamming-Abstand d, so können alle Störungen,
die höchstens d-1 Bits betreffen, sicher erkannt werden.
• Beispiel: d = 3
gültiges gültiges
Codewort ungültig ungültig Codewort
1 1 1
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 58
Beispiel: 2-aus-5-Code
• Hamming-Abstand: d=2
7 4 2 1 0
0 1 1 0 0 0 2 0 0 1 0 1
1 0 0 0 1 1
2 0 0 1 0 1
3 0 0 1 1 0 X 0 0 1 0 0
4 0 1 0 0 1
5 0 1 0 1 0
6 0 1 1 0 0
7 1 0 0 0 1 3 0 0 1 1 0
8 1 0 0 1 0
9 1 0 1 0 0
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 59
Paritätsbit
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 60
Paritätsbit (2)
⇨ Jede ungeradzahlige Anzahl von 1-Bit-Fehlern wird erkannt,
keine geradzahlige Anzahl von Bitfehlern wird erkannt.
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 61
Beispiele:
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 62
Allgemeine Prüfziffern
─ Prüfziffernbestimmung:
Wichtung der Stellen von rechts beginnend mit 1, 2, 3, ...
Prüfziffer: gewichtete Quersumme modulo 11 = 0
Der mögliche Rest 10 wird codiert durch die Prüfziffer X.
─ Probe:
3 3 4 3 0 0 8 9 2 3
10 9 8 7 6 5 4 3 2 1 Gewichte
3*10+3*9+4*8+3*7+0*6+0*5+8*4+9*3+2*2+3 = 176 176:11 = 16 Rest 0 ⇨ gültig!
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 63
Allgemeine Prüfziffern (2)
4388440041323
Land
Unternehmen Artikel Prüfziffer Quelle: EAN / GS1
40-44=D
─ Prüfziffernbestimmung:
Wichtung der Stellen von rechts beginnend mit 1, 3, 1, 3, 1, ...
Prüfziffer: gewichtete Quersumme modulo 10 = 0
─ Probe: 4 3 8 8 4 4 0 0 4 1 3 2 3
1 3 1 3 1 3 1 3 1 3 1 3 1 Gewichte
4 9 8 4 4 2 0 0 4 3 3 6 3 Produkte modulo 10
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 64
Codewort-Verdopplung
• Bemerkungen:
─ Anwendungsbeispiel: Wiederholung von Zahlen in Telegrammen.
─ In Rechensystemen relativ unüblich, bei der Verarbeitung von
Information als Zeitredundanz (zweimalige Nacheinanderausführung)
vorkommend.
─ Einfach, aber u.U. verschwenderisch
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 65
4.5.3 Fehlerkorrigierende Codes
• Satz:
Hat ein Code den Hamming-Abstand d = 2*k+1, so können alle Stö-
rungen, die höchstens k Bits betreffen, sicher korrigiert werden.
• Beispiel: gültiges gültiges
Codewort ungültig ungültig Codewort
d = 3 k = 1
1 1 1
Korrektur Korrektur
Zur Korrektur von 1-Bit-Fehlern ist ein Hamming-Abstand von
d=3 notwendig.
• Der Hamming-Abstand 2*k+1 ist minimal zur Korrektur von
k-Bit-Fehlern.
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 66
Fehlerkorrigierende Codes (2)
• Visualisierung am n-Würfel
─ Beispiel: Die Code-Wörter des Code c:A→{0,1}n für n=3 entsprechen
den Ecken eines Würfels.
─ Liegt zwischen je zwei Codewörtern (blau) jeweils mindestens eine
„ungenutzte“ Ecke, so gilt d=2 und (d-1=) 1-Bit-Fehler lassen sich
erkennen.
─ Liegen mindestens zwei ungenutzte Ecken zwischen den Code-
wörtern (rot), gilt d=3 = 2*k+1 für k=1, also: 1-Bit-Fehler lassen
sich korrigieren:
011 „Einzugs-
111 bereich“
001 101 von 111
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 67
Binärer Rechteck-Code
• Rechteck-Code:
─ Binärer Block-Code als Ausgangsbasis
─ Paritätsbit je Codewort (Querparität) wie bisher
─ Paritätsbit je Spalte für einen Block von Codewörtern (z.B. 16 oder
64) (Längsparität)
0100101 1 Quer-
Daten 1000100 0 parität,
0100101 1 hier
gerade
1010010 1
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 68
Beispiel
1101001 0 1101001 0
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 69
Beispiel (2)
1101001 0 1101001 0
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 70
Beispiel (3)
1101001 0 1101011 0
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 71
Lineare Codes, systematische Codes
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 72
Hamming-Code
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 73
Details am Beispiel
• (7,4,3)-Hamming Code
─ 4 Daten- und 3 Prüfbits, Hamming-Abstand = 3
─ betrachtetes Datenwort sei 1011
P P P
001 010 011 100 101 110 111
1 0 1 1
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 74
Details am Beispiel (2)
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 76
Optimalität des Hamming-Codes
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 77
SEC/DED-Codes
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 78
Maintenance (M)-Codes
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 79
Überführung von k-Bit-Fehler in 1-Bit-Fehler
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 80
4.5.4 Zyklische Codes
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 81
Grundlage: Polynomdivision
• Polynom-Addition modulo 2
─ Addition der Koeffizienten gleicher Exponenten modulo 2
─ Rechenregeln: 0+0=0, 0+1=1, 1+0=1, 1+1=0 (XOR)
─ Subtraktion entspricht hier Addition (!)
• Beispiel:
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 82
Grundlage: Polynomdivision (2)
• Polynom-Division modulo 2
─ P(x) = D(x)*Q(x) + R(x)
─ Restpolynom R(x) besitzt einen Grad, der kleiner als der von Q(x) ist
─ Für CRC interessiert nur R(x), nicht D(x)
• Beispiel:
P(x)= 1*x5+0*x4+1*x3+1*x2+0*x1+1*x0 = x5 +x3+x2 +1
Q(x)= 1*x3+1*x2+0*x1+1*x0 = x3+x2 +1
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 84
Vorgehensweise (2)
• Überprüfung/Fehlererkennung:
─ Auf Empfängerseite wird P(x) wieder durch G(x) mit Rest R'(x)
dividiert.
─ Fehlerfreiheit ⇔ Restpolynom R'(x)=0
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 85
Beispiel
• xr * M(x) : G(x)
(x5+x4 ) : (x3 +1) = x2+x
x5 +x2
-----------
x4 +x2
x4 +x
----------
x2+x
Daten CRC
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 86
Beispiel (2)
• P(x) : G(x)
(x5+x4 +x2+x ) : (x3 +1) = x2+x
x5 +x2
-----------
x4 +x
x4 +x
----------
0
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 87
Beispiel (3)
• P(x) : G(x)
x5 +x2+x : x3 +1 = x2
x5 +x2
-------------
x
●
R(x) = x ≠ 0 ⇨Fehler erkannt. Daten verfälscht!
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 88
Beispiel (Notation mittels Koeffizienten)
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 89
Anmerkungen
• Erkannte Fehler:
─ Sei F(x) ein Fehlerpolynom, und P'(x) = P(x) + F(x) werde empfangen.
Der zyklische Code mit Generator-Polynom G(x) erkennt einen Fehler
genau dann, wenn G(x) das Fehlerwort F(x) nicht ohne Rest teilt.
─ Wenn der Grad des Fehlerpolynoms kleiner ist als der Grad r des
erzeugenden Polynoms G(x), ist G(x) kein Teiler von F(x).
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 90
Standardisierte Generator-Polynome
• CRC-16: x16+x15+x2+1
• CRC-32: x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1
(Ethernet)
08.12.2022 © 2002, 2022 H. Werntges, FB Design Informatik Medien (DCSM), Hochschule RheinMain 4 - 91