Lektion 1.1

Information, Daten und Codierung

20 min Lesezeit

Du schickst einer Freundin eine Nachricht. Dein Handy kennt keine Buchstaben, es kennt nur „Strom an“ und „Strom aus“. Trotzdem kommt dein Text an, mit allen Buchstaben und Umlauten.

An der Supermarktkasse piept der Scanner, sobald er den Strichcode auf der Packung gelesen hat. Auch dieser Code besteht nur aus zwei Dingen: dunklen Strichen und hellen Lücken.

Wie schreibt man Buchstaben, Zahlen und Bilder mit nur zwei Zeichen auf? Wie viele Zeichen braucht man dafür? Und woran merkt der Empfänger, wenn bei der Übertragung etwas kaputtgegangen ist? Das klärst du in dieser Lektion.

Definition

Daten, Information und Nachricht

Daten sind Zeichen, die man speichern oder weitergeben kann, zum Beispiel die Zeichenfolge 17. Für sich allein sagt sie nichts. Erst wenn du weißt, was sie bedeutet, entsteht eine Information: „Draußen sind es 17 Grad.“ Dieselben Daten können ganz andere Informationen sein: 17 kann ein Alter, eine Temperatur oder eine Hausnummer sein.

Eine Nachricht sind Daten, die jemand an jemand anderen schickt. Wer sie schickt, heißt Sender. Wer sie bekommt, heißt Empfänger.

Definition

Codierung und Sender-Empfänger-Modell

Sender und Empfänger müssen sich einigen, wie Information in Zeichen aufgeschrieben wird. Diese Vorschrift heißt Code. Sie legt fest, welche Zeichen es gibt (der Zeichenvorrat) und welches Codewort zu welchem Zeichen gehört. Der Sender codiert: Er übersetzt die Information in Codewörter. Der Empfänger decodiert: Er übersetzt sie zurück. Das ist das Sender-Empfänger-Modell. Es klappt nur, wenn beide denselben Code benutzen.

Codes begegnen dir überall:

CodeCodewörter bestehen ausBeispiel
Morsecodekurzen und langen SignalenS = kurz kurz kurz, O = lang lang lang
Blindenschriftbis zu 6 Punkten, die erhaben oder glatt sindjedes Punktmuster steht für ein Zeichen
Barcodedunklen Strichen und hellen Lückencodiert die Artikelnummer, die Kasse sucht den Preis
QR-Codeschwarzen und weißen Quadratencodiert zum Beispiel eine Internetadresse
ASCIINullen und EinsenA = 1000001
Definition

Bit, Byte und Maßeinheiten

Ein Computer kennt nur zwei Zustände: Strom an und Strom aus. Man schreibt sie als 1 und 0. Eine Stelle, die 0 oder 1 sein kann, heißt Bit. Acht Bits zusammen heißen 1 Byte. Für ein Zeichen eines einfachen Textes genügt oft 1 Byte. Für große Datenmengen nimmt man Vorsilben, die du von Kilometer und Kilogramm kennst. „Kilo“ heißt tausend.

EinheitAbkürzungGröße
KilobytekB1000 Byte
MegabyteMB1000 kB
GigabyteGB1000 MB
TerabyteTB1000 GB

Manche Programme rechnen mit 1024 statt 1000 und schreiben dann KiB, MiB und GiB. Hier rechnen wir immer mit 1000.

Beispiel

Wie viele Fotos passen auf den Stick?

Ein Foto ist 4 MB groß. Auf einem Speicherstick sind 8 GB frei. Wie viele Fotos passen darauf? Wie viele Bit hat ein Foto?

Zuerst brauchst du gleiche Einheiten: 8 GB = 8000 MB. Dann teilst du: 8000 : 4 = 2000. Es passen 2000 Fotos auf den Stick. Für die Bits: 4 MB sind 4 Millionen Byte. Jedes Byte hat 8 Bit, also hat das Foto 32 Millionen Bit.

Definition

Codelänge und Anzahl der Codewörter

Die Codelänge ist die Zahl der Bits eines Codeworts. Wie viele verschiedene Codewörter gibt es bei n Bit? Bei 1 Bit sind es 2 (0 und 1). Bei 2 Bit sind es 4 (00, 01, 10, 11). Jedes weitere Bit verdoppelt die Zahl, denn vor jedes Codewort kannst du eine 0 oder eine 1 setzen.

Codelänge n12345678
Codewörter248163264128256

Bei n Bit gibt es also 2n2^n Codewörter. Die Schreibweise 2n2^n heißt: n-mal die 2 mit sich selbst malnehmen, zum Beispiel 23=2⋅2⋅2=82^3 = 2 \cdot 2 \cdot 2 = 8. Hat dein Zeichenvorrat m Zeichen, suchst du die kleinste Codelänge n, bei der 2n2^n mindestens so groß ist wie m. Haben alle Codewörter dieselbe Länge, weiß der Empfänger, wo ein Zeichen endet: Er schneidet die Bitfolge in gleich lange Stücke.

Beispiel

Eine eigene Codierungsvorschrift

Ein Roboter versteht fünf Befehle: vor, zurück, links, rechts, stopp. Entwirf einen Code mit gleich langen Codewörtern. Codiere dann „vor, links, links, stopp“ und decodiere die Bitfolge 011000001100.

Der Zeichenvorrat hat 5 Zeichen. Mit 2 Bit gibt es nur 4 Codewörter, das reicht nicht. Mit 3 Bit gibt es 23=82^3 = 8 Codewörter, das reicht. Die Codelänge ist also 3. Eine mögliche Vorschrift:

Befehlvorzurücklinksrechtsstopp
Codewort000001010011100

Codieren: vor = 000, links = 010, links = 010, stopp = 100. Die Bitfolge lautet 000010010100.

Decodieren: Du schneidest 011000001100 in Stücke zu je 3 Bit: 011 | 000 | 001 | 100. Das sind rechts, vor, zurück, stopp.

Definition

Stellenwertsystem, Binärzahlen und Binäraddition

Das Dezimalsystem ist ein Stellenwertsystem: Jede Stelle ist zehnmal so viel wert wie die Stelle rechts davon (1, 10, 100, 1000), und es gibt zehn Ziffern. Das Binärsystem funktioniert genauso, nur mit der Zahl 2: Jede Stelle ist doppelt so viel wert wie die rechts davon, und es gibt nur die Ziffern 0 und 1.

Stellenwert1286432168421
Binärzahl 101100001011

Binär nach dezimal: Addiere die Stellenwerte, unter denen eine 1 steht. Für 1011 ist das 8 + 2 + 1 = 11. Dezimal nach binär: Ziehe den größten Stellenwert ab, der noch hineinpasst, setze dort eine 1 und mache mit dem Rest weiter.

Binär addieren: Du rechnest von rechts nach links wie bei der schriftlichen Addition. Es gilt 0 + 0 = 0, 0 + 1 = 1 und 1 + 1 = 10 (Ziffer 0, Übertrag 1). Bei 1 + 1 + Übertrag 1 steht 11 (Ziffer 1, Übertrag 1).

Beispiel

Umwandeln und addieren

a) Wandle die Dezimalzahl 37 in eine Binärzahl um. b) Wandle die Binärzahl 101101 in eine Dezimalzahl um. c) Addiere die Binärzahlen 1011 und 0110.

a) Der größte Stellenwert, der in 37 passt, ist 32. 37 − 32 = 5. Die 16 und die 8 passen nicht in 5, die 4 passt: 5 − 4 = 1. Die 2 passt nicht, die 1 passt. Einsen stehen bei 32, 4 und 1. Also ist 37 binär 100101.

b) Die Stellenwerte von rechts sind 1, 2, 4, 8, 16, 32. Einsen stehen bei 1, 4, 8 und 32. Es ergibt sich 1 + 4 + 8 + 32 = 45.

c) Von rechts nach links: 1 + 0 = 1. Dann 1 + 1 = 10, also Ziffer 0 und Übertrag 1. Dann 0 + 1 + Übertrag 1 = 10, also Ziffer 0 und Übertrag 1. Dann 1 + 0 + Übertrag 1 = 10, also Ziffer 0 und Übertrag 1. Der letzte Übertrag wird eine neue Stelle. Ergebnis: 10001. Zur Probe: 11 + 6 = 17 = 16 + 1, das stimmt.

Definition

Zeichen und Texte als Bitfolgen

Ein Text wird Zeichen für Zeichen codiert. Beim ASCII-Code hat jedes Zeichen eine Nummer von 0 bis 127. Die Nummer wird als Binärzahl mit 7 Bit geschrieben, denn 27=1282^7 = 128. Meist setzt man vorn eine 0 davor und kommt so auf 8 Bit, also 1 Byte je Zeichen. Beispiele: A = 65, B = 66, a = 97, die Ziffer 0 = 48.

Umlaute und ß fehlen, und für andere Schriften reichen 128 Zeichen nicht. Darum gibt es Unicode: ein Code für sehr viele Zeichen aus fast allen Schriften der Welt. Sein erster Teil ist der ASCII-Code.

Beispiel

Ein Wort als Bitfolge

Schreibe das Wort BAD im ASCII-Code, jedes Zeichen mit 8 Bit. Wie viele Byte sind das?

B hat die Nummer 66, A die 65 und D die 68. Der Stellenwert 64 passt in alle drei Nummern. Danach bleiben 2, 1 und 4 übrig. Also ist 66 = 64 + 2 = 1000010, 65 = 64 + 1 = 1000001 und 68 = 64 + 4 = 1000100. Mit einer 0 davor sind das 8 Bit je Zeichen: 01000010 01000001 01000100. Drei Zeichen sind 3 Byte, das sind 24 Bit.

Definition

Prüfsumme und Fehlererkennung

Bei der Übertragung kann ein Bit kippen, zum Beispiel durch eine Störung. Eine Prüfsumme ist ein Wert, den der Sender aus den Daten berechnet und mitschickt. Der Empfänger rechnet noch einmal nach. Stimmen die Werte nicht überein, ist ein Fehler passiert. Die letzte Ziffer unter vielen Strichcodes ist so eine Prüfziffer.

Die einfachste Prüfsumme ist das Paritätsbit: Der Sender hängt ein Bit an, sodass die Zahl der Einsen gerade wird. Der Empfänger zählt die Einsen. Ist ihre Zahl ungerade, ist ein Fehler passiert. Das Paritätsbit zeigt aber nur, dass etwas falsch ist, nicht welches Bit. Kippen zwei Bits, bleibt die Zahl der Einsen gerade, und der Fehler fällt nicht auf.

Beispiel

Paritätsbit anwenden

Der Sender will die 7 Bit 1011001 schicken und hängt ein Paritätsbit an. Welche 8 Bit schickt er? Beim Empfänger kommt 10010010 an. Ist alles in Ordnung?

In 1011001 stehen vier Einsen. Vier ist gerade, also ist das Paritätsbit 0. Der Sender schickt 10110010. Beim Empfänger kommt 10010010 an. Er zählt die Einsen: Es sind drei. Drei ist ungerade, also ist bei der Übertragung ein Fehler passiert. Welches Bit falsch ist, kann er nicht sagen. (Hier hat sich das dritte Bit geändert.)

Häufige Fehler

Binärzahlen wie Dezimalzahlen lesen

„Die Binärzahl 100 ist hundert.“

Richtig ist

Im Binärsystem haben die Stellen die Werte 1, 2, 4, 8 und so weiter. Die Zahl 100 hat eine 1 an der Stelle mit dem Wert 4. Sie ist also vier. Schreibe „binär“ dazu, wenn eine Verwechslung möglich ist.

Zusammenfassung

  • Daten sind Zeichen. Erst mit ihrer Bedeutung werden sie zur Information. Eine Nachricht geht von einem Sender zu einem Empfänger.

  • Ein Code ordnet jedem Zeichen eines Zeichenvorrats ein Codewort zu. Der Sender codiert, der Empfänger decodiert.

  • 1 Byte sind 8 Bit. Kilo, Mega, Giga und Tera sind jeweils der Faktor 1000.

  • Mit n Bit gibt es 2n2^n Codewörter. Für m Zeichen wählt man die kleinste Codelänge n, bei der 2n2^n mindestens so groß ist wie m.

  • Im Binärsystem haben die Stellen die Werte 1, 2, 4, 8 und so weiter. Man wandelt um, indem man Stellenwerte addiert oder abzieht. Beim Addieren gilt 1 + 1 = 10.

  • Texte werden Zeichen für Zeichen codiert, zum Beispiel im ASCII-Code mit 7 Bit je Zeichen. Unicode enthält viel mehr Zeichen.

  • Eine Prüfsumme wie das Paritätsbit zeigt Übertragungsfehler an. Sie erkennt nicht jeden Fehler und verbessert keinen.

Übungen

Aufgabe 1Numerisch

Auf einer Speicherkarte sind 16 GB frei. Ein Video braucht 800 MB. Wie viele solcher Videos passen höchstens auf die Karte?

Aufgabe 2Multiple Choice

Ein Zeichenvorrat hat 20 Zeichen. Alle Codewörter sollen gleich lang sein. Wie viele Bit hat ein Codewort mindestens?

Aufgabe 3Numerisch

Wandle die Binärzahl 110101 in eine Dezimalzahl um.

Aufgabe 4Numerisch

Addiere die Binärzahlen 1101 und 0111. Gib das Ergebnis als Dezimalzahl an.

Aufgabe 5Multiple Choice

Ein Sender hängt an 7 Bit ein Paritätsbit an, sodass die Zahl der Einsen gerade ist. Beim Empfänger kommt 10110101 an. Was stimmt?