Codierung von Daten

Informationen jeglicher Art werden ständig von einem Sender über einen Kommunikationskanal verschickt und von einen Empfänger erhalten. Ein einfaches Beispiel ist Sprechen. Der Redner formuliert mit Wörter, welche durch die Luft weitergeleitet werden und ein Empfänger kann diese mit seinen Ohren wahrnehmen. Doch was ist, wenn die Entfernung zum Hören zu groß ist?

Stellen wir uns vor, an einem Sommertag im Jahr 1300 möchte ein Wächter eines Burgturms eine Nachricht an einen weiteren Wächter in der unter der Burg liegenden Stadt übermitteln. Die beiden haben vorher vereinbart, dass Sie sich gegenseitig Signale mit Hilfe großer einfarbiger Flaggen senden wollen, falls irgendetwas mitzuteilen ist. Beide haben eine gelbe und eine blaue Flagge.

  1. Entwickle mit einem Partner eine Möglichkeit, die verschiedenen, in der unten abgebildeten Codeworttabelle enthaltenen Begriffe mit Hilfe der Flaggensignale darzustellen. Notiere deine Überlegungen den Spalten Codewort. Für Gelb und Blau kannst du die Zeichen 'g' und 'b' verwenden. Es ist nur zulässig, eine der Flaggen zu heben und nicht beide gleichzeitig.
Begriff Codewort Begriff Codewort Begriff Codewort
Gefahr
Tag
Angirff
Feuer
Nacht
Schwert
Wasser
Morgen
Nachricht
Hilfe
Abend
Wache
Brot
Taube
Feind
König
Mittag
Westen
  1. Codiert mit Hilfe eurer Codeworttabelle eine selbst gewählte Nachricht und übergebt diese einer anderen Partnergruppe. Diese soll die empfangene Nachricht übersetzen, decodieren genannt. Ihr selbst decodiert die Nachricht der anderen Gruppe. Tauscht euch anschließend mit der zweiten Partnergruppe über eure Erfolgschancen aus.
  2. Diskutiert die folgenden Szenarien hinsichtlich möglicher Schwierigkeiten eurer Codierung:
    1. Die Person auf dem Dorfplatz hat noch eine weitere Person auf der Burg, mit der sie kommunizieren möchte.
    2. Auf der Burg, auf dem Marktplatz, auf den beiden Feldern und am Waldrand stehen überall Personen, die auf Entfernung ständig mit ihren Flaggen kommunizieren. Nun kommt eine angreifende Armee und der einzige Wächter am Waldrand möchte dies zur Burg melden.
    3. Ein Spion observiert das Dorf über einige Zeit. Er sieht, wie Flaggen geschwenkt werden und andere reagieren.
    4. Der Hauptmann auf der Burg sieht aus dem Turm des Verantwortlichen für den Marktplatz Hilfesignale kommen. Allerdings kann er nicht erkennen, wer diese sendet.
    5. Beim Senden einer Nachricht wird ein Teil der Nachricht durch Kaminraum überdeckt und es sind einzelne Zeichen nicht zu erkennen.

Wie du im obigen Beispiel gemerkt haben, muss man sich vor der Kommunikation zwischen Sender und Empfänger auf eine bestimmte Codierung einigen, mit der Nachrichten ausgetauscht werden. Im Alltag ist dies eine gemeinsam bekannte Sprache. In unserem Beispiel eine gemeinsame Codeworttabelle. Darüber hinaus mussten gewisse Regeln festgelegt werden, nach denen die Kommunikation stattfindet.

In der Informatik werden dafür Protokolle definiert, welcher festlegen, wie die Datenpakete aufgebaut sind und wie sie transportiert werden. Protokolle sind Regeln und Standards, die bei der Übertragung von Daten zwischen Geräten in Netzwerken angewendet werden. Protokolle sind ein wichtiger Bestandteil der Kommunikation zwischen Geräten und gewährleisten, dass Daten zuverlässig und effizient übertragen werden. Dabei erfüllen Protokolle mehrere Aufgaben:

Codierung: Das Protokoll legt natürlich auch fest, in welcher Form die Informationen codiert werden, darüber entscheiden häufig auch die genutzten Anwendungen. Auch wird hiermit die Größe des Datenpakets und die Einteilung der Datenpakets definiert.
Authentifizierung: Protokolle können verwendet werden, um die Authentizität von Benutzern und die Verschlüsselung von Daten während der Übertragung zu ermöglichen.
Verschlüsselung: Protokolle können verwendet werden, um die Verschlüsselung von Daten während der Übertragung zu ermöglichen.
Adressierung: Protokolle stellen sicher, dass Daten an die richtigen Geräte (Empfänger) gesendet werden, indem sie Adressierungsinformationen enthalten.
Fehlererkennung und -korrektur: Protokolle können Fehler erkennen und korrigieren, die während der Übertragung von Daten auftauchen können, Dadurch wird die Integrität der Daten gewährleistet.
Sequenzierung: Protokolle stellen sicher, dass Daten in der richtigen Reihenfolge empfangen werden bzw. in der richtigen Reihenfolge wieder zusammengesetzt werden können, damit sie korrekt interpretiert werden können.
Quality of Service (QoS): Protokolle können auch dazu beitragen, dass wichtige Daten bevorzugt behandelt werden und eine höhere Priorität erhalten, um sicherzustellen, dass sie zuverlässig und in Echtzeit übertragen werden können.

Um zu verstehen, wie eine Maschine Daten speichern und verarbeiten kann, schauen wir uns in aller Kürze die beiden dafür zuständigen Komponenten eines gängigen Computers an.

Festplatte Arbeitsspeicher

Inneres einer Festplatte

Lesen- und Schreiben auf einer Festplatte

Arbeitsspeicher

Kondensator

Die Magnetscheiben kann man sich wie eine Schallplatte vorstellen. Die Speicherbereiche sind wie kreisförmige Bahnen auf den Scheiben angeordnet. Der Lese- / Schreibkopf magnetisiert einen kleinen Bereich oder nicht. So werden Informationen auf den Scheiben hinterlegt. Zum Beispiel könnte ein Teil einer Bahn wie folgt magnetisiert sein ('m' steht für magnetisiert und 'n' für nicht magnetisiert): ...mmnnmnmmnnnmnnnmnmnmmmn... Der Lese- / Schreibkopf kann seine Höhe verändern und so auch andere Scheiben des Scheibenstapels ansteuern. Da die Speicherung der Daten magnetisch funktioniert, bleiben die Daten auch ohne Stromversorgung auf der Festplatte. Eine Festplatte ist wesentlich langsamer beim Lesen und Schreiben, als ein Arbeitsspeicher, da sich der Arm physikalisch bewegen muss. → Eine Festplatte soll Informationen langfristig speichern In den kleinen schwarzen Chips des Arbeitsspeichers sind eine Vielzahl Kondensatoren verbaut und miteinander verbunden. Ein Kondensator kann in seinem Innern Ladungen speichern oder nicht. Dies kann für jeden einzelnen Kondensator überprüft werden. Zum Beispiel könnte eine Reihe von Kondensatoren wie folgt Strom gespeichert haben ('l' steht für Ladung gespeichert und 'n' für keinen Ladung gespeichert). ...nlllnlnlllnnnl... Die verbauten Kondensatoren verlieren ihre Ladung schnell, wenn keine Stromversorgung angeschlossen ist. Deshalb gehen bei gängigen Arbeitsspeichern die gespeicherten Informationen verloren, wenn die Stromversorgung unterbunden wird. Arbeitsspeicher ist deutlich schneller, als eine Festplatte. → Arbeitsspeicher soll Informationen verarbeiten
Fazit: Eine Maschine speichert und verarbeitet Informationen nur in zwei Zuständen, welche im Folgenden als '0' und '1' bezeichnet werden. Eine 0 oder eine 1 werden als bit bezeichnet. Eine Folge von bit, zum Beispiel 0110110001, nennt man eine Dualzahl oder Binärzahl.

Dieser Abschnitt basiert auf einer Idee von Philip Schwarzbauer (Osnabrück, 2023)

An einem Sommertag im Jahr 1300 verkauft ein Händler Obst auf dem Markt. Der Händler wiegt seine Ware mit einer mechanischen Waage ab. Wenn ein Kunde eine gewisse Menge einer Ware möchte (z.B. 3kg Äpfel), legt er zunächst entsprechende Gewichte in die linke Waagschale. Dann füllt er die rechte Schale mit Ware (Äpfel) auf, bis die Waage im Gleichgewicht ist. Der Gemüsehändler hat jeweils ein Gewicht mit der Masse 1kg, 2kg, 4kg und 8kg. Kunden kaufen seine Ware immer in ganzen Kilos.

  1. Welche Gewichte muss der Händler in die Waagschale legen, um die folgenden Warenmengen abzuwiegen?
    • 3kg
    • 7kg
    • 13kg
  2. Der neue Gehilfe des Obsthändlers hat noch Schwierigkeiten mit dem Abwiegen. Er kennt nämlich leider nur die Ziffern 0 und 1 – im Mittelalter hatten die wenigsten Menschen Zugang zu Bildung. Um ihn trotzdem Ware abwiegen lassen zu können, stellt der Händler die Gewichte systematisch auf, das leichteste steht rechts. Nun geht er die Gewichte durch und vergibt eine „1“, wenn das Gewicht verwendet werden soll und eine „0“, wenn nicht. Wenn alle benötigten Gewichte aufgeführt sind, beendet er den Code und ruft ihn dem Gehilfen zu.
    kg 8 4 2 1
    0 1 0 1
    Für 5kg ruft er seinem Gehilfen also den Code "0101" zu.
    Gib für den Gehilfen die Codes für die Gewichte aus Aufgabenteil a) an.
  3. Ein Gelehrter kauft am Stand Birnen und ist von dem Zählsystem ganz begeistert. Im Jahr 1300 können nur wenige Menschen Buchstaben oder Zahlen schreiben. Aber das System aus Einsen und Nullen könnte man dem einfachen Volk zum Zählen beibringen, denn es lassen sich ja alle Zahlen damit darstellen! Der Gelehrte beginnt mit der Arbeit an seinem neuen Zahlensystem. Fülle die Tabelle mit den jeweiligen Codierungen aus. Du kannst als Hilfsmittel die Karten mit den Gewichten nutzen.
  4. 8 4 2 1   Dezimalzahl
    0 0 0 0 0
    0 0 0 1   1
               
               
               
               
               
               
               
               
               
               
               
               
               
               
  5. Ein Bote möchte 19 kg Birnen für den königlichen Ball bestellen. Der Händler kann allerdings mit seinen Gewichten höchstens 15kg abwiegen. Daher geht er zum Schmied, um ein weiteres Gewicht anfertigen zu lassen. Er fragt sich, welche Masse dieses Gewicht haben sollte. Im besten Fall sollte es so schwer sein, dass er auch 20 oder vielleicht sogar 25kg damit abwiegen kann… Was für eine Masse sollte das neue Gewicht haben, damit der Händler in Zukunft möglichst viele verschiedene Warenmengen über 15kg abwiegen kann? Begründe deine Antwort schriftlich.

Naja, ganz so war es nicht. Aber das Zahlensystem, das du gerade kennengelernt hast, heißt tatsächlich Binär- oder auch Dualsystem. Der Name stammt aber daher, dass nur zwei Ziffern (0 und 1) verwendet werden und nicht wie in unserem gewohnten Zahlsystem zehn (0, 1, 2, 3, 4, 5, 6, 7, 8 und 9). Unser gewohntes Zahlensystem heißt Dezimalsystem.

Das Dezimalsystem (10er-System)

Wenn wir Menschen zählen, benutzen wir normalerweise das Dezimalsystem (10er-System), d. h. wir verwenden 10 verschiedene Symbole für die Zahlen. Das sind in unserem Fall die Ziffern von 0 bis 9. Daraus werden alle Zahlen zusammengesetzt. Dabei hat jede Stelle einer Zahl eine bestimmte Bedeutung. In der Zahl 3162 steht die Ziffer 6 an der Zehnerstelle, bedeutet also 6 Zehner, d. h. 60. Insgesamt interpretiert man die Zahl wie folgt: 3162 = 3 Tausender + 1 Hunderter + 6 Zehner + 2 Einer = 3000 + 100 + 60 + 2. Steht eine Ziffer um eine Stelle weiter links in einer Zahl, dann ist ihr Wert immer 10-mal so groß, da ja jede Stelle 10-mal so viel zählt: Einer → Zehner → Hunderter → … In einer Stellenwerttafel kann man es folgendermaßen notieren:

Zahl Zehntausender (104=10.000) Tausender (103=1.000) Hunderter (102=100) Zehner (101=10) Einer (100=1
3162 0 3 1 6 2
49305 4 9 3 0 5

Du wirst sicherlich bemerkt haben, dass die Stellenwerte – also im Beispiel die Massen der einzelnen Gewichte – sich immer verdoppeln. Man spricht von Zweierpotenzen, denn jedes Gewicht hat den Wert 2n, wobei n die Stelle des Gewichts in der Reihe ist. Wir multiplizieren die Ziffer (0 oder 1) jeweils mit ihrem Stellenwert, um auf den Gesamtwert der Binärzahl zu kommen.

Das Dualsystem (2er-System)

Wenn Computer Zahlen und andere Daten verarbeiten, nutzen sie nicht das 10er-System. Da die Speicher in einem Computer nur die zwei Zustände an und aus kennen, verarbeitet ein Rechner die Daten binär. Das bedeutet, dass die Daten so gespeichert werden, dass man genau zwei Symbole verwendet. In diesem Fall sind es nur die Ziffern 0 und 1. Genau wie beim Zehnersystem kann man damit alle Zahlen notieren. Diese sind dann eine Folge aus Nullen und Einsen. Beispielsweise ist die Dezimalzahl 19 im Dualsystem die Folge 10011. 10011 im Dualsystem bedeutet 1∙16er + 0∙8er + 0∙4er + 1∙2er + 1∙1er = 16 + 2 + 1 = 19 im Dezimalsystem. In einer Stellenwerttafel kann man es folgendermaßen notieren:

Dezimalzahl Sechzehner (24=16) Achter (23=8) Vierer (22=4) Zweier (21=2) Einer (20=1) Dualzahl/th>
19 1 0 0 1 1 10011
28 1 1 1 0 0 11100

Kontroller der beiden Zahlen: 16+2+1=19. Passt! 16+8+4=28. Passt auch!

Damit die Zahlen nicht miteinander verwechselt werden, schreibt man manchmal eine kleine 10 bzw. eine kleine 2 unten an die Zahl.
1001110 → Die Zahl ist eine Dezimalzahl und bedeutet 10.011 (Zehntausendelf), so wie wir es kennen.
100112 → Die Zahl ist eine Dualzahl und bedeutet im Dezimalsystem 19.
Möchte man eine Dezimalzahl in eine Dualzahl umwandeln oder umgekehrt, schreibt man diese in eine Stellenwerttafel und liest das gewünschte Ergebnis einfach ab. Beim Eintragen beginnt man immer mit dem größten Wert, der zur Zahl passt. Den Rest verteilt man dann auf die anderen Spalten. Dies wird am Beispiel 53 gezeigt.
Man überprüft zunächst, welches die größte Zweierpotenz ist, die in die umzuwandelnde Zahl passt.
25=32 passt noch in die 53 aber 26=64 ist zu groß. Somit kann man schon einmal bei 32 eine 1 eintragen.

25=32 24=16 23=8 22=4 21=2 20=1
1

Übrig sind nun noch 53-32=21. Die 16 passt noch einmal hinein.

25=32 24=16 23=8 22=4 21=2 20=1
1 1

Übrig sind nun noch 21-16=5. Die 8 passt nicht mehr hinein, aber die 4.

25=32 24=16 23=8 22=4 21=2 20=1
1 1 0 1

Übrig sind nun noch 5-4=1. Die 2 passt nicht mehr hinein, aber die 1.

25=32 24=16 23=8 22=4 21=2 20=1
1 1 0 1 0 1

Also ist 5310=1101012.

  1. Rechne die Dezimal- und Dualzahlen in der Tabelle entsprechend um. Lade dir die Tabellen hier herunter oder mache dir einen Screenshot. Überlege dir am Ende noch zwei eigene Zahlen und rechne sie um.

    Hinweis zum Vorgehen: Bei der Zahl 41 notiert man bei 128er und bei 64er eine 0, da diese größer sind als 41. In die 32er-Spalte kommt eine 1. Damit hat man schon einmal 32 notiert. Da als Rest 41 - 32 = 9 bleibt, müssen nun noch 9 verteilt werden. Das geht, indem man 1x 8er und 1x 1er aus - wählt. Die anderen Spalten erhalten eine Null. Insgesamt ergibt sich dann 00101001 oder kürzer notiert 101001. (Die führenden Nullen lässt man einfach weg.) Es gilt also 4110 = 1010012.
  2. Es gibt auch ein Zahlensystem mit insgesamt 16 Zeichen, das Hexadezimalsystem (16er-System). Hier verwendet man die Zeichen von 0 bis 9 und zusätzlich die Buchstaben von A bis F. Dabei entspricht das A einer dezimalen 10, ein B einer 11, … und das F einer 15.
    Vorlage für die Stellenwerttafel:
    1. Erläutere, wie die Stellenwerttafel im Hexadezimalsystem aufgebaut ist. Vervollständige die erste Zeile in der obigen Vorlage.
    2. Stelle die beiden Dezimalzahlen in der Tabelle als Hexadezimalzahlen dar.
    3. Stelle die beiden Hexadezimalzahlen als Dezimalzahl und dann als Dualzahl dar.
    4. Überlege dir noch zwei eigene Zahlen und rechne sie um.

In unserem Einstiegsszenario mit den roten und grünen Flaggen haben wir erkannt, dass eine einheitliche Codierung, an die sich alle potentiellen Kommunikationspartner halten, notwendig ist, wenn möglichst viele Teilnehmer miteinander kommunizieren wollen.
Die Grundlage der Darstellung von Zeichen (Buchstaben, Ziffern, Satzzeichen etc.) für Maschinen ist bislang der ASCII-Code (American Standard Code for Information Interchange).
Er wurde 1963 als 7-Bit-Code eingeführt, d. h. es lassen sich 128 Zeichen codieren. Der Code enthielt allerdings zunächst nur 99 Zeichen (Steuersymbole, Ziffern und Großbuchstaben, keine Kleinbuchstaben). Seit 1974 ist der Code nach Ergänzungen unter der Bezeichnung ISO-646 Weltstandard.
Zum Beispiel hat A nach Definition die Darstellung 1000001. Dieses Bitmuster entspricht als Dualzahl gelesen der Dezimalzahl 65. Der ASCII-Code von A wird deswegen auch als 65 angegeben. Der ASCII-Code wird in der bitweisen Darstellung mit einer führenden Null zu einem Byte, also 8 Bit, aufgefüllt.

A = 01000001 = 65
B = 01000010 = 66
...
Z = 01011010 = 90
a = 01100001 = 97
...
z = 01111010 = 122
0 = 00110000 = 48
...
9 = 00111001 = 57

Deutsche Umlaute, Sonderzeichen etc. wurden früher (auf dem IBMPC) durch einen erweiterten ASCII-Code dargestellt (z. B. ä = 132, ö = 148, ü = 129). Diese Codierung ist überholt.
Eine heute gültige Codierung wird durch die Norm ISO-8859 festgelegt (z. B. ä = 228, ö = 246, ü = 252).
Die Zeichensätze unter MS-Windows weichen teilweise von der ISO-Norm ab.
Die untenstehende ASCII-Code Tabelle nach der ISO-Norm zeigt die druckbaren Zeichen. Der Bereich von 0 bis 32 enthält nicht druckbare Zeichen, z. B. Zeilenvorschub (Return). Der ASCII-Code 32 stellt das Leerzeichen dar.

Zeichen ASCII-Wert (Dezimal) ASCII-Code (8-Bit)
04800110000
14900110001
25000110010
35100110011
45200110100
55300110101
65400110110
75500110111
85600111000
95700111001
A6501000001
B6601000010
C6701000011
D6801000100
E6901000101
F7001000110
G7101000111
H7201001000
I7301001001
J7401001010
K7501001011
L7601001100
M7701001101
N7801001110
O7901001111
P8001010000
Q8101010001
R8201010010
S8301010011
T8401010100
U8501010101
V8601010110
W8701010111
X8801011000
Y8901011001
Z9001011010
a9701100001
b9801100010
c9901100011
d10001100100
e10101100101
f10201100110
g10301100111
h10401101000
i10501101001
j10601101010
k10701101011
l10801101100
m10901101101
n11001101110
o11101101111
p11201110000
q11301110001
r11401110010
s11501110011
t11601110100
u11701110101
v11801110110
w11901110111
x12001111000
y12101111001
z12201111010
.4600101110
,4400101100
:5800111010
;5900111011
?6300111111
!3300100001
(4000101000
)4100101001
  1. Decodiere den folgenden in Dualzahlen dargestellten ASCII-Text.
    01000001 01100110 01100110 01100101 01101110 00100000 01101100 01101001 01100101 01100010 01100101 01101110 00100000 01000010 01100001 01101110 01100001 01101110 01100101 01101110
  2. Codiere eine kurze Nachricht mit der ASCII-Codierung.

  3. Vergleiche die ASCII-Codierung (Binär) der Zahlen, Klein- und Großbuchstaben untereinander und miteinander.