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 | ![]() |
= | AUS | ![]() |
= | Ofen ausschalten |
| Hohe Spannung | ![]() |
= | 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 | ![]() |
![]() |
![]() |
![]() |
Fenster zu, Ofen aus |
| 01 | ![]() |
![]() |
![]() |
![]() |
Fenster zu, Ofen ein |
| 10 | ![]() |
![]() |
![]() |
![]() |
Fenster auf, Ofen aus |
| 11 | ![]() |
![]() |
![]() |
![]() |
Fenster auf, Ofen ein |
Elektrische Schaltung für eine 2-Bit Datenübertragung für die Meldung: Fenster und Ofen.
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 | |




