Information, Daten und Codierung
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.
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.
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:
| Code | Codewörter bestehen aus | Beispiel |
|---|---|---|
| Morsecode | kurzen und langen Signalen | S = kurz kurz kurz, O = lang lang lang |
| Blindenschrift | bis zu 6 Punkten, die erhaben oder glatt sind | jedes Punktmuster steht für ein Zeichen |
| Barcode | dunklen Strichen und hellen Lücken | codiert die Artikelnummer, die Kasse sucht den Preis |
| QR-Code | schwarzen und weißen Quadraten | codiert zum Beispiel eine Internetadresse |
| ASCII | Nullen und Einsen | A = 1000001 |
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.
| Einheit | Abkürzung | Größe |
|---|---|---|
| Kilobyte | kB | 1000 Byte |
| Megabyte | MB | 1000 kB |
| Gigabyte | GB | 1000 MB |
| Terabyte | TB | 1000 GB |
Manche Programme rechnen mit 1024 statt 1000 und schreiben dann KiB, MiB und GiB. Hier rechnen wir immer mit 1000.
Wie viele Fotos passen auf den Stick?
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.
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 n | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| Codewörter | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256 |
Bei n Bit gibt es also Codewörter. Die Schreibweise heißt: n-mal die 2 mit sich selbst malnehmen, zum Beispiel . Hat dein Zeichenvorrat m Zeichen, suchst du die kleinste Codelänge n, bei der 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.
Eine eigene Codierungsvorschrift
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 Codewörter, das reicht. Die Codelänge ist also 3. Eine mögliche Vorschrift:
| Befehl | vor | zurück | links | rechts | stopp |
|---|---|---|---|---|---|
| Codewort | 000 | 001 | 010 | 011 | 100 |
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.
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.
| Stellenwert | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|---|
| Binärzahl 1011 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 |
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).
Umwandeln und addieren
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.
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 . 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.
Ein Wort als Bitfolge
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.
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.
Paritätsbit anwenden
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.)
Binärzahlen wie Dezimalzahlen lesen
Binärzahlen wie Dezimalzahlen lesen
„Die Binärzahl 100 ist hundert.“
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 Codewörter. Für m Zeichen wählt man die kleinste Codelänge n, bei der 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
Auf einer Speicherkarte sind 16 GB frei. Ein Video braucht 800 MB. Wie viele solcher Videos passen höchstens auf die Karte?
Ein Zeichenvorrat hat 20 Zeichen. Alle Codewörter sollen gleich lang sein. Wie viele Bit hat ein Codewort mindestens?
Wandle die Binärzahl 110101 in eine Dezimalzahl um.
Addiere die Binärzahlen 1101 und 0111. Gib das Ergebnis als Dezimalzahl an.
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?