Hans Wittwer

Geschichten, die das Leben schrieb

Nachrichtentechnik

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 die 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, und die Folie beginnt zu schwingen. Auf eine mit Kohlestaub gefüllte Dose geklebt, drückt sie den Kohlestaub zusammen und entlastet ihn.  Dabei ändert sich der elektrische Widerstand der Kohlefüllung. Durch die Kohlefüllung fliesst ein Strom. Wegen der Widerstandsänderung ändert sich dieser Strom. Der Strom fliesst durch einen Draht.

Auf der Empfangsseite 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 die 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
Tief Tiefe Spannung = AUS Lampe AUS = Ofen AUS
Hoch Hohe Spannung = EIN Lampe EIN = Ofen EIN

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

System 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:

System 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 ergibt, müsste man überdenken. Fenster auf und gleichzeitig Ofen ein ist Energieverschwendung.

Dann haben die Menschen auf acht 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
bn 27 26 25 24 23 22 21 20
Gewicht 128 64 32 16 8 4 2 1

Beispiel: Byte 01001001
Bit 6, 3 und 0 sind gesetzt.
26 + 23 + 20 = 64 + 8 + 1 = DEC 73

Das Byte und sein Hexadezimalwert

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

Halbbyte 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.

Weitere Bezeichnungen

Folgende Bezeichnungen kommen in Dokumentationen auch vor:

Anzahl Bits System Bezeichnung
  BIN  
1 1 Bit Bit
4 4 Bit Halbbyte
8 8 Bit Byte (Standard); Oktett
16 2 × 8 Bit Doppelbyte; Wort
32 4 × 8 Bit 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.

Steuern mit Bytes

Meine ersten Erfahrungen habe ich mit der 2-Byte (16 Bit) Codierung gemacht. Dem Rechner haben wir mit 2‑Byte (Wort1) Anweisungen mitteilen können, welches Signal er an seinen Anschlüssen lesen 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.
1 In der Steuerungsbranche werden 2‑Byte auch Wort genannt.

Detailliert auf den Aufbau dieses Codes einzugehen, sprengt den Rahmen meiner Ausführungen. Nimm einfach zur Kenntnis, dass meine damalige Steuerung Kommandos wortweise verarbeitet hat.

Text in Bytes

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

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

Die Möglichkeiten werden wie folgt verwendet:

# HEX Zeichen
1 - 32 0 - 1F Steuerzeichen1
33 - 48 20 - 2F !"#$%&'()*+,-./
49 - 58 30 - 39 Ziffern 0 bis 9
59 - 65 3A - 40 :;<=>?@
66 - 91 41 - 5A A bis Z
92 - 97 5B - 60 [\]^_`
98 - 123 61 - 7A a bis z
124 - 127 7B - 7E {|}~
128     7F     delete

1 Steuerzeichen sind nicht druckbare Zeichen wie Return, Tab, Esc usw.

# Möglichkeit 1 bis 128
HEX (Hexadezimal Zahlensystem, 16er-System)
Zeichen (ASCII-Zeichen)

Wie erwähnt kommt man auf 128 Zeichen (DEC 0 bis 127). Das reicht für das grosse und kleine Alphabet, die Ziffern 0 bis 9 und die gängigsten Satzzeichen. Die Zeichen DEC 0 bis DEC 31 und DEC 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 8) wurde als Kontrollbit (Paritätsbit) verwendet. Eine Art Kontrolle, ob das gesendete Zeichen korrekt sei. Vor dem Senden wurden die gesetzten Bits 1 bis 7 gezählt und wenn die Summe ungerade war, wurde das Bit 8 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 8) 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 128 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 UTF-8 eine der unterstützten Codierungen ist.
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 vollkommen 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.

Der Encoder muss Bytes machen, sonst streikt die Transportstrecke.

Was die Bits bedeuten, spielt 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 nur, wenn es gefährlich oder verboten ist. Gefährlich oder verboten ist ein anderes Thema. Darauf einzugehen, würde den Rahmen dieser Geschichte sprengen. Suche in der Literatur nach Datensicherheit, Datenschutz und Datenschutzverordnung.

Der Encoder interessiert sich für die Bedeutung der Bits, damit der Decoder die Meldung versteht. Der Encoder muss Bytes machen, sonst streikt die Transportstrecke.

Was nun?

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

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