Hans Wittwer

Geschichten, die das Leben schrieb

Nachrichtentechnik

Codieren

Nachrichtentechnik - Codieren
← Komponenten Text codieren →

Ein Encoder wandelt Zustände, Befehle, Messwerte, Text, Ton und Bild in ein Bitmuster um.

Sprache war zuerst

Menschen haben sich überlegt, wie sie Sprache in ein elektrisches Signal umwandeln können.

Eine der ersten Lösungen

Die Luftschwingungen, die beim Reden entstehen treffen auf eine dünne Folie. Die Folie beginnt zu schwingen. Die Folie ist auf eine Dose geklebt. Die Dose ist mit Kohlestaub gefüllt und die Folie drückt den Kohlestaub zusammen oder entlastet ihn. Dabei ändert sich der elektrische Widerstand der Kohlefüllung. Durch die Kohlefüllung fliesst ein Strom. Wegen der Widerstandsänderung ändert dieser Strom. Der Strom fliesst durch einen Draht.

Auf der anderen Seite fliesst der Strom durch eine Drahtspule, erzeugt ein Magnetfeld und bewegt eine Nadel aus Eisen. Die Nadel bringt eine dünne Kartonscheibe zum Schwingen. Die dünne Kartonscheibe ist auf eine Kiste gespannt, erzeugt Luftschwingungen, die durch den Hohlraum der Kiste verstärkt werden. Das menschliche Ohr empfängt die Luftschwingungen. Das Gesagte kann gehört und verstanden werden.

Die Dose heisst Mikrofon, die Kiste heisst Lautsprecher und alles zusammen heisst Telefon.

Das ist Analogtechnik, weil das elektrische Signal analog zu den Luftschwingungen schwingt.

Die Entwickler wollen die Sprachqualität stetig verbessern und die Störungen beseitigen. Heute wird Sprache digital übertragen, doch zuerst wurde digital gesteuert dann kam Text Bild und Ton.

Steuern

Findige Köpfe grübelten und kamen auf die Idee Strom durch einen Draht zu senden und dem Menschen am anderen Ende des Drahtes zu sagen er soll eine Lampe anschliessen. Dann haben sie abgemacht, was es bedeutet wenn die Lampe brennt oder dunkel ist. Das ist Digitaltechnik. Digital stammt vom lateinischen Digitus (Finger). Mit den Fingern kann man eine begrenzte Anzahl Zeichen geben. Mit der Schaltung mit einem Draht kann man zwei Befehle übertragen: tiefe Spannung = Lampe dunkel = Ofen ausschalten hohe Spannung = Lampe hell = Ofen einschalten.

Signal   Lampe   Befehl
Tiefe Spannung Tiefe Spannung = AUS Lampe AUS = Ofen ausschalten
Hohe Spannung Hohe Spannung = EIN Lampe EIN = Ofen einschalten

Dann kamen die Menschen auf die Idee zwei Drähte zu nehmen dann kamen sie auf 4 verschiedene Meldungen. Die Schlaumeier haben den Wert vom Zweier-Zahlensysteme (Binärsystem; BIN) dazu geschrieben.

Zahlensystem Draht Lampe Befehl
BIN 2 1 2 1 Beschreibung
00 0 0 AUS AUS Fenster zu, Ofen aus
01 0 1 AUS EIN Fenster zu, Ofen ein
10 1 0 EIN AUS Fenster auf, Ofen aus
11 1 1 EIN EIN Fenster auf, Ofen ein

Elektrische Schaltung für eine 2-Bit Datenübertragung für die Meldung: Fenster und Ofen.

2 Bit Datenübertragung

Wie Du siehst, braucht es im binären Zahlensystem zwei Stellen um vier Möglichkeiten darzustellen. Es braucht auch zwei Drähte und zwei Lampen. Folge dessen können wir die Drähte und die Lampen weglassen, weil wir im binären Zahlensystem genug sehen.

Wir schreiben:

Zahlensystem Meldung
BIN Nr Beschreibung
00 1 Fenster aus, Ofen aus
01 2 Fenster aus, Ofen ein
10 3 Fenster ein, Ofen aus
11 4 Fenster auf, Ofen ein

Ob die Meldung 4 Sinn macht, müsste man überdenken. Fenster auf und gleichzeitig Ofen ein ist Energieverschwendung.

Dann haben die Menschen auf 8 Drähte erweitert das ergibt 256 Möglichkeiten. Ein Datenpaket von 8 Bit heisst Byte.

Ein Byte (8 Bit) kann 256 Möglichkeiten darstellen das ist die gängigste Paketgrösse.

Das darfst Du gerne auswendig lernen.

Das Byte und sein Dezimalwert

  Byte
Bit 7 6 5 4 3 2 1 0
Bit Wert im Dezimalsystem 27= 128 26= 64 25= 32 24= 16 23= 8 22= 4 21= 2 20= 1

Beispiel: 01001001 = 26 + 23 + 20 = 64 + 8 + 1 = 73

Das Byte und sein Hexadezimalwert

Damit Menschen ein Byte übersichtlicher angeben können haben sie das Byte in zwei Halbbytes aufgeteilt. Ein Halb Byte hat 4-Bit und kann 16 Kombinationen repräsentieren. Die 16 Kombinationen werden mit 0 - 9 und A - F angegeben. Damit kann ein Halb Byte mit einem Zeichen und ein Byte mit zwei Zeichen dargestellt werden.

Halb Byte HEX-Ziffer
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F

Das Byte vom obigen Beispiel im Dezimalsystem (DEC) 73 im Binärsystem (BIN) 01001001 geben wir neu im Hexadezimalsystem (HEX) 49 an. Mehr zu Zahlensystemen folgt später.

Steuern mit Bytes

Meine ersten Erfahrungen habe ich mit der 2-Byte (16 Bit) Codierungen gemacht. Dem Rechner haben wir mit 2-Byte Anweisungen mitteilen können welches Signal er an seinen Anschlüssen lesen soll und mit welcher booleschen Operation (UND/ODER und NICHT) er dieses Signal in die Rechnung einbeziehen soll und als Resultat welchen Anschluss er aktivieren oder deaktivieren soll.

Detailliert auf den Aufbau dieses Codes einzugehen sprengt den Rahmen meiner Ausführungen. Merke Dir einfach, dass Steuerungen Kommandos byteweise verarbeiten. Dies damit die Transportstrecke die Daten übertragen kann.

Text in Bytes

Eine Auswahl aus dem ersten und heute noch gültigen 7-Bit Code (ASCII-Code)).

# DEC 7-Bit Code Zeichen Bemerkung
49 48 0110000 0 Ziffer 0
50 49 0111001 9 Ziffer 9
66 65 1000001 A Grossstorystabe A
91 90 1011010 Z Grossstorystabe Z
98 97 1100001 a Kleinstorystabe a
123 122 1111010 z Kleinstorystabe z

Die Möglichkeiten werden wie folgt verwendet:

# BIN DEC HEX Zeichen
1 - 32 _000 0000 - _001 1111 0 - 31 0 - 1F Steuerzeichen (nicht druckbare Zeichen wie Return Tab Esc usw.)
33 - 48 _010 0000 - _010 1111 32 - 47 20 - 2F Diverse druckbare Zeichen: !"#$%&'()*+,-./
49 - 58 _011 0000 - _011 1010 48 - 57 30 - 39 Ziffern 0 bis 9
59 - 65 _011 1011 - _100 0000 58 - 64 3A - 40 Diverse druckbare Zeichen: :;<=>?@
66 - 91 _100 0001 - _101 1010 65 - 90 41 - 5A grosses Alphabet A bis Z
92 - 97 _101 1011 - _110 0000 91 - 96 5B - 60 Diverse druckbare Zeichen: [\]^_`
98 - 123 _110 0001 - _111 1010 97 - 122 61 - 7A kleines Alphabet a bis z
124 - 127 _111 1011 - _111 1110 123 - 126 7B - 7E Diverse druckbare Zeichen: {|}~
128     _111 1111     127     7F     DEL

# = Möglichkeit
BIN = Binärzahlensystem auch Dualzahlensystem (2er-Ssystem) _ = Paritätsbit
DEC = Dezimalzahlensystem (10er-System)
HEX = Hexadezimalzahlensystem (16er-System)

Wie erwähnt kommt man auf 128 Zeichen (Dezimaler Bytewert 0 bis 127). Das reicht gut für das grosse und kleine Alphabet die Ziffern 0 bis 9 und die gängigsten Satzzeichen. Die Zeichen 0 bis 31 und 127 werden für Steuerzeichen (nicht druckbare Zeichen) verwendet. Die Schlaumeier haben eine Tastatur gebaut und jedem Knopf ein Zeichen zugeordnet. Wenn Du eine Taste drückst, sendet die Tastatur das Zeichen in der entsprechenden Bit-Kombination an den Computer. Drück mal Alt+65 (65 auf der Nummerntastatur) dann müsste ein A auf deinem Bildschirm erscheinen. Die Return-Taste sendet das Zeichen 13. Diese Zuordnung haben Amerikaner erfunden und zum Standardcode für Informationsaustausch gemacht. Sie nannten den Code "American Standard Code for Information Interchange" kurz ASCII-Code. Das höchstwertige Bit (Bit 7) wurde als Kontrollbit (Paritätsbit) verwendet. Eine Art Kontrolle, ob das gesendete Zeichen korrekt sei. Vor dem Senden wurden die gesetzten Bit 0 bis 6 gezählt und wenn die Summe ungerade war, wurde das Bit 7 gesetzt. Das nannte man "Gerade Parität". Der Empfänger hat alle gesetzten Bits im Byte zusammengezählt und kontrolliert, ob die Summe eine gerade Zahl ist. Falls nicht war das Byte höchstwahrscheinlich fehlerhaft.

Damals hatten die Amerikaner mit den Umlauten und den Spezialzeichen anderer Länder nichts am Hut. Der ASCII-Code verbreitete sich rasant und unzählige Spezialisten weltweit haben sich dafür eingesetzt ihre landeseigenen Zeichen unterzubringen. Das Paritätsbit (Bit 7) wurde zu einem weiteren Datenbit umfunktioniert und der ANSI-Code entstand. Damit erhöhte sich der Zeichensatz von 128 auf 256 Zeichen. Die oberen 128 Zeichen wurden für verschiedene Zeichensätze verwendet. Wenn man Zeichen oberhalb 127 richtig verwenden wollte, musste man wissen welcher Zeichensatz beim Erstellen der Daten gültig war. Die Ära der "falschen" Zeichen war geboren. Eine Lösung für dieses Problem war komplex. Der Unicode mit der UTF-8 Formatierung entstand und hat sich weitgehend durchgesetzt. Achtung es gibt noch Cracks, die das hartnäckig nicht können wollen oder den Charme von UTF-8 nicht erfasst haben.

Der Unicode ist auf 16 Bit aufgebaut und wurde auf 21 Bit erweitert und kann heute 1'114'112 Zeichen eindeutig identifizieren. Der Unicode beginnt mit dem ASCII-Zeichensatz enthält die Codetabellen die als erweiterter ASCII-Zeichensatz verwendet wurden und sonst eine Riesenanzahl Zeichen wie Emoticons und Hieroglyphen aus fernen Ländern.

UTF-8 (8-bit Unicode Transformation Format) transportiert sämtliche 1'114'112 Unicode-Zeichen. Das UTF-8-Format verwendet 1 2 3 oder 4 Byte pro Zeichen. UTF-8-Code mit ausschliesslich Ein-Byte-Zeichen ist mit dem ASCII-Code identisch.

UTF-8 hat eine zentrale Bedeutung als globale Zeichenkodierung im Internet. Die Internet Engineering Task Force verlangt von allen neuen Internetkommunikationsprotokollen, dass die Zeichenkodierung deklariert wird und dass UTF-8 eine der unterstützten Kodierungen ist.

Codieren ist Nachrichten in Elektrisch übersetzen. Das ist wie Sprachen lernen. Quasi Nachrichten in die Computersprache übersetzen.

Es gibt unzählige Methoden zu codieren. Die Gängigsten schauen wir uns an...

Der Code interessiert nicht

Was jetzt? Wieso soll der Code nicht interessieren?

Natürlich interessiert der Code. Der Encoder und der Decoder wollen den Code kennen. Der Transportstrecke hingegen ist der Code völlig egal. Wieso denn das?

Weil die Transportstrecke nur Würmer von Einsen und Nullen überträgt ungeachtet der Bedeutung der Einsen und Nullen. Die Transportstrecke will nur 8er-Pakete (Bytes) weil sie byteweise überträgt.

Folgende Bezeichnungen kommen in Dokumentationen auch vor:

Bits Zahlensystem Bezeichnung
  Binärsystem (BIN)  
1 1 Bit
4 1111 Halbbyte
8 11111111 Byte (Standard)
16 11111111 11111111 Doppelbyte; Wort
32 11111111 11111111 11111111 11111111 Doppelwort

Einem Byte sagt man auch Oktett. Zwei Byte also 16-Bit sagt man Doppelbyte. In der Steuerungstechnik meinen wir mit Wort 16-Bit und mit Doppelwort 32-Bit.

Was die Bits bedeuten, spielt wie bereits oben erwähnt für die Übertragung keine Rolle, weil die Datenübertragung nur Bytes Würmer von Einsen und Nullen überträgt ungeachtet der Bedeutung der Einsen und Nullen. Speichermedien speichern auch nur Bytes ungeachtet der Bedeutung der Einsen und Nullen. Das ist wie bei einem Schiffscontainer jeder Schiffscontainer ist genau gleich gross. Was drin ist interessiert die Reederei nicht.

Der Encoder auf der Senderseite interessiert sich hingegen für die Bedeutung, weil er daran interessiert ist, dass ihn der Decoder auf der Empfangsseite versteht. Der Encoder muss Bytes machen sonst streikt die Transportstrecke.

← Komponenten Text codieren →
Nachrichtentechnik - Codieren