Information und Informatiksysteme
Codierung: Zeichen, Zahlen und Bilder als Bitmuster
Wie aus zwei Zuständen jede Nachricht wird: Bit, Byte, ASCII, Unicode und die Farben eines Bildpunkts.
Benötigte Grundlagen
Dieses Vorwissen brauchst du für das Kapitel. Schau kurz nach, wenn dir etwas davon nicht mehr präsent ist, sonst leg direkt los.
Einführung
Ein Rechner kennt im Innersten nur zwei Zustände: Spannung liegt an oder nicht. Aus dieser einen Unterscheidung entstehen Texte in jeder Schrift der Welt, Fotos, Musik und Filme.
Das klingt nach einem Zaubertrick, ist aber eine ganz nüchterne Sache: Man muss sich nur einigen. Wer festlegt, welches Muster wofür steht, kann mit zwei Zuständen alles darstellen. Genau solche Festlegungen heißen Codes, und in diesem Kapitel bauen wir uns selbst einen, bevor wir uns die echten ansehen.
Das kannst du nach diesem Kapitel
erklären, was ein Bit ist und warum Bit genau verschiedene Muster ergeben.
Byte und die Vorsätze Kilo, Mega, Giga richtig verwenden und Binärpräfixe unterscheiden.
beschreiben, wie ASCII und Unicode Zeichen auf Bitmuster abbilden, und begründen, warum ASCII nicht mehr reicht.
den Speicherbedarf eines Bildes aus und Farbtiefe berechnen.
begründen, warum ein Code eine Vereinbarung ist und keine Eigenschaft der .
Ein Bit, zwei Möglichkeiten
Die kleinste Einheit heißt Bit. Ein Bit kann genau zwei Werte annehmen, die man 0 und 1 nennt. Mehr steckt nicht dahinter; ob physikalisch Spannung anliegt, ein Magnetfeld zeigt oder eine Vertiefung in einer CD sitzt, ist für die Informatik unerheblich.
Mit einem Bit kann man also zwei Dinge unterscheiden, etwa „ja“ und „nein“.
Warum es Muster sind
Nehmen wir zwei Bit. Für das erste gibt es zwei Möglichkeiten. Zu jeder davon gibt es wieder zwei Möglichkeiten für das zweite. Also insgesamt :
Kommt ein drittes Bit dazu, kann man an jedes der vier Muster eine 0 oder eine 1 anhängen. Die Anzahl verdoppelt sich also bei jedem zusätzlichen Bit. Genau das beschreibt die Zweierpotenz:
Diese Begründung solltest du selbst führen können, denn sie erklärt später alle Speichergrößen und alle Zahlbereiche.
Byte und die Vorsätze
Acht Bit werden zu einer Einheit zusammengefasst, dem Byte. Ein Byte kann verschiedene Muster tragen.
Bei größeren Mengen gibt es zwei Zählweisen, und ihre Verwechslung ist eine dauerhafte Fehlerquelle:
| Vorsatz | Bedeutung | Wert |
|---|---|---|
| Kilobyte (kB) | 1 000 Byte | |
| Kibibyte (KiB) | 1 024 Byte | |
| Megabyte (MB) | 1 000 000 Byte | |
| Mebibyte (MiB) | 1 048 576 Byte |
Festplattenhersteller rechnen in Zehnerpotenzen, Betriebssysteme oft in Zweierpotenzen. Deshalb zeigt eine „500 GB“-Festplatte im System nur etwa 465 GiB an. Es fehlt nichts, es wird nur anders gezählt.
Ein Byte: acht Bit
Acht Bit ergeben ein Byte. Die obere Zeile zeigt, warum die Stellen nicht gleichwertig sind: Jede zählt doppelt so viel wie ihre rechte Nachbarin. Die Rechnung darunter ist genau die, die du auch von Hand aufschreiben würdest, nur die Stellen mit einer 1 tragen etwas bei, alle anderen fallen weg.
Zeichen codieren: ASCII
Ein Text besteht aus Zeichen. Um ihn zu speichern, braucht man eine Tabelle, die jedem Zeichen ein Bitmuster zuordnet. Die älteste verbreitete heißt ASCII und benutzt 7 Bit, also Plätze.
Ein paar Werte lohnen sich zu kennen, weil sie eine Struktur haben:
- = 65, = 66, … = 90
- = 97, = 98, … = 122
- = 48, = 49, … = 57
Die Buchstaben stehen also fortlaufend. Deshalb kann ein Rechner alphabetisch sortieren, indem er schlicht Zahlen vergleicht. Und der Abstand zwischen Groß- und Kleinbuchstaben ist immer 32, weshalb sich Großschreibung durch eine einzige Subtraktion erreichen lässt.
Beachte einen Stolperstein: Das Zeichen hat den Wert 55, nicht 7. Die Ziffer als Schriftzeichen und die Zahl als Wert sind zwei verschiedene Dinge; genau deshalb muss man Eingaben aus einem Textfeld erst umwandeln, bevor man mit ihnen rechnet.
Vom Buchstaben zum Bitmuster
Der Weg hat zwei Schritte, und sie werden gern zu einem verkürzt. Der erste ist reine Vereinbarung: Dass ausgerechnet die 65 für das große A steht, hat jemand festgelegt, es hätte auch anders kommen können. Der zweite ist reine Rechnung: Aus der 65 wird 01000001, und daran ist nichts mehr zu entscheiden. Wer beides vermischt, hält die Codetabelle für ein Naturgesetz.
Warum ASCII nicht reicht: Unicode
128 Plätze reichen für das englische Alphabet. Sie reichen nicht für ä, ö, ü, ß, für Griechisch, Kyrillisch, Chinesisch, Arabisch oder für Emojis. Es entstanden Dutzende einander widersprechender Erweiterungen, und daher kommt das bekannte Problem, dass Umlaute in fremden als seltsame Zeichen erscheinen: Dieselben Bitmuster wurden nach einer anderen Vereinbarung gelesen.
Unicode löst das, indem es jedem Zeichen der Welt eine eindeutige Nummer gibt, über eine Million Plätze. Die verbreitetste Speicherform heißt UTF-8. Sie ist geschickt gebaut: Die alten ASCII-Zeichen brauchen weiterhin nur 1 Byte, seltenere Zeichen 2 bis 4 Byte. Ein englischer Text wird dadurch nicht größer, ein deutscher nur geringfügig, und trotzdem ist jedes Zeichen der Welt darstellbar.
Bilder codieren
Ein Rasterbild wird in ein Gitter aus Bildpunkten zerlegt. Für jeden Punkt wird die Farbe gespeichert. Wie viele Bit dafür zur Verfügung stehen, heißt Farbtiefe:
- 1 Bit: zwei Farben, also schwarz oder weiß
- 8 Bit: 256 Farben oder 256 Graustufen
- 24 Bit: je 8 Bit für Rot, Grün und Blau, also Farben
Der Speicherbedarf ist dann schlicht:
Ein Bild aus Bildpunkten
Rechts steht dasselbe Motiv wie links, nur in Zellen zerlegt: Jede Zelle bekommt genau eine Farbe, nämlich die des Motivs in ihrer Mitte. Deshalb wird aus dem runden Sonnenrand eine Treppe und aus der schrägen Hügelkante eine Stufenlinie. Mehr Zellen machen die Treppen kleiner, geradere Kanten liefern sie nie.
Ein Bildpunkt: drei Zahlen
Ein einzelner Bildpunkt der Sonne, auseinandergenommen. Jeder der drei Werte liegt zwischen und , passt also in genau ein Byte, zusammen drei Byte oder 24 Bit je Bildpunkt. Die Balken sind maßstäblich: Der Rotbalken ist dreimal so lang wie der Blaubalken, weil ungefähr dreimal ist. Multipliziere die drei Byte mit der Zahl der Bildpunkte, und du hast den Speicherbedarf des unkomprimierten Bildes.
Der eine Gedanke, der bleibt
Alle diese Codes haben dasselbe Muster: Jemand hat festgelegt, welches Bitmuster wofür steht. Ein Bitmuster hat keine eingebaute Bedeutung. ist der Buchstabe , die Zahl 65, ein sehr dunkles Grau oder ein Stück eines Tons, je nachdem, welche Vereinbarung gilt.
Damit ist dieses Kapitel die technische Fortsetzung des ersten: sind Form, die Bedeutung kommt aus der Vereinbarung.
Einen eigenen Code entwerfen
In einem Schulhaus sollen sechs Zustände einer Ampelanlage übertragen werden. Wie viele Bit brauchst du mindestens, und wie sieht eine mögliche Zuordnung aus?
- 1
Gefragt ist die kleinste Anzahl mit .
- 2
ist zu wenig, reicht. Also 3 Bit.
- 3
Eine mögliche Vereinbarung: 000 = aus, 001 = rot, 010 = rot-gelb, 011 = grün, 100 = gelb, 101 = Blinken. Die Muster 110 und 111 bleiben frei.
- 4
Die freien Muster sind kein Fehler, sondern der Normalfall: Zweierpotenzen treffen selten genau die benötigte Anzahl. Man kann sie für spätere Zustände oder zur Fehlererkennung nutzen.
- 5
Entscheidend ist: und Empfänger müssen dieselbe Tabelle benutzen. Sonst hält der Empfänger 011 vielleicht für „gelb“.
3 Bit reichen für 6 Zustände; die Zuordnung ist frei wählbar, muss aber beiden Seiten bekannt sein.
Ein Wort in ASCII
Gib die ASCII-Werte für das Wort an und rechne den ersten Buchstaben in ein Bitmuster um.
- 1
Die Buchstaben liegen im ASCII-Code lückenlos hintereinander: auf = 65 folgt = 66, dann = 67 und so weiter. Genau deshalb genügt ein einziger Ankerwert. Man muss nicht 26 Zahlen auswendig können, sondern nur abzählen. steht direkt hinter , also ist = 66.
- 2
Für die Kleinbuchstaben gilt dieselbe Lückenlosigkeit, nur mit einem anderen Anker: = 97. Beim Abzählen ist die übliche Falle, den Anker mitzuzählen, ist der neunte Buchstabe, liegt aber nur acht Schritte hinter . Also = .
- 3
ist der zwanzigste Kleinbuchstabe, liegt also neunzehn Schritte hinter : . Dass Groß- und Kleinbuchstaben getrennte Anker haben (65 und 97), ist wichtig: und sind für den Rechner zwei verschiedene Zeichen mit einem Abstand von genau 32.
- 4
Also = 66, 105, 116.
- 5
Umrechnung von 66 in 8 Bit: Man zerlegt die Zahl in Zweierpotenzen, denn genau die sind die Stellenwerte im Dualsystem. , also stehen an den Stellen für 64 und 2 Einsen: .
Probe: ✓, und die Zahl passt in 8 Bit, weil sie unter 256 liegt. Genau darum belegt jedes ASCII-Zeichen ein Byte.
= 66, 105, 116; als Byte: .
Speicherbedarf eines Fotos
Ein Foto hat 4000 mal 3000 Bildpunkte bei 24 Bit Farbtiefe. Wie groß ist es unkomprimiert, und was folgt daraus?
- 1
Zuerst überlegen, was gespeichert wird. Ein unkomprimiertes Bild ist nichts als eine Liste von Farbwerten, einer je Bildpunkt. Also braucht man erst die Anzahl der Bildpunkte, und die ist ein Produkt aus Breite und Höhe: .
- 2
Bits gesamt: Bit. Die 24 Bit sind die Farbtiefe, also der Platz für einen einzelnen Farbwert, je 8 Bit für Rot, Grün und Blau. Jeder Bildpunkt kostet gleich viel, unabhängig davon, welche Farbe er zeigt.
- 3
In Byte: Byte, also rund 36 MB.
Größenordnungsprobe: 12 Millionen Bildpunkte zu je 3 Byte müssen 36 Millionen Byte ergeben, das lässt sich im Kopf gegenrechnen und deckt einen verrutschten Faktor sofort auf.
- 4
Auf eine Speicherkarte mit 32 GB passten damit nur rund 890 Bilder, und jedes Verschicken dauerte spürbar.
- 5
Genau deshalb speichert keine Kamera unkomprimiert. Wie man den Bedarf verkleinert, ist Thema des Kapitels zur .
36 MB je Bild. Der Wert macht anschaulich, warum Kompression keine Spielerei ist.
Typischer Fehler
„Das Byte ist die Zahl 7, weil dort das Zeichen 7 steht.“
Hier werden zwei Ebenen vermischt. ist als Zahl gelesen 55, und 55 ist im ASCII-Code das Schriftzeichen . Die Zahl 7 dagegen wäre als Byte .
Der Unterschied ist praktisch folgenreich. Wenn ein Programm die Eingabe aus einem Textfeld ungeprüft addiert, rechnet es mit den Zeichencodes und nicht mit den gemeinten Zahlen: Aus plus wird dann oder 104, je nach Sprache, aber nicht 8. Deshalb steht in fast jeder Programmiersprache ein ausdrücklicher Umwandlungsschritt zwischen Texteingabe und Rechnung.
Die Merkfrage lautet: Meine ich das Zeichen oder den Wert? Wer sie stellt, umgeht einen der häufigsten Anfängerfehler.
Übung 1
leichta) Wie viele verschiedene Muster ergeben 5 Bit? b) Wie viele Bit brauchst du mindestens, um 100 verschiedene Schülernamen zu unterscheiden? c) Wie viele Byte hat ein reiner ASCII-Text mit 240 Zeichen?
Tipp anzeigen
Zu b): Zähle die Zweierpotenzen hoch, bis du 100 überschreitest.
Lösung anzeigen
a) Muster.
b) reicht nicht, reicht. Also 7 Bit.
c) Jedes ASCII-Zeichen belegt 1 Byte, also 240 Byte.
Detaillierte Schritterklärung anzeigen
Hier wird jeder Schritt einzeln erklärt, vor allem, warum er gemacht wird.
✦ Empfohlen: Standard – Die normale Erklärungstiefe passt zum Einstieg.
- 1
a) Warum Bits eine Zweierpotenz ergeben
Jedes Bit kann zwei Zustände annehmen. Kommt ein Bit hinzu, kann jede bisherige Kombination einmal mit 0 und einmal mit 1 fortgesetzt werden, die Anzahl verdoppelt sich also bei jedem Bit. Aus einer Verdopplung je Schritt wird eine Zweierpotenz.
Zwischenergebnis
32 verschiedene Muster.
- 2
b) Die Frage umdrehen: von der Anzahl zur Bitzahl
Jetzt ist die Anzahl gegeben und die Bitzahl gesucht. Man geht die Zweierpotenzen hoch, bis man 100 zum ersten Mal erreicht oder überschreitet: reicht nicht für 100 Namen, reicht.
Zwischenergebnis
7 Bit.
- 3
c) Vom Zeichen zum Byte
Reines ASCII belegt je Zeichen genau 1 Byte. Die Rechnung ist deshalb eine schlichte Multiplikation mit 1: 240 Zeichen ergeben 240 Byte.
Zwischenergebnis
240 Byte.
- 4
Beide Richtungen nebeneinanderstellen
Teil a) und Teil b) sind dieselbe Beziehung, einmal vorwärts und einmal rückwärts gelesen: aus Bits die Anzahl bestimmen () oder aus der Anzahl die Bits ( so klein wie möglich, aber groß genug). Wer das erkennt, muss sich nur eine Regel merken.
Übung 2
mittela) Wandle den ASCII-Wert von in ein 8-Bit-Muster um. b) Welches Zeichen gehört zum Muster ? c) Erkläre, warum ein Rechner Wörter alphabetisch sortieren kann, ohne das Alphabet zu „kennen“.
Tipp anzeigen
Zu a): = 65, und ist der dreizehnte Buchstabe.
Lösung anzeigen
a) = . Zerlegung: . Muster: .
b) , und 97 ist .
c) Weil die Buchstaben im Code fortlaufend angeordnet sind: = 65, = 66 und so weiter. Der Rechner vergleicht schlicht Zahlen und erhält dadurch dieselbe Reihenfolge wie das Alphabet. Er braucht keinerlei Wissen über Sprache; die Reihenfolge steckt bereits in der Vereinbarung des Codes.
Detaillierte Schritterklärung anzeigen
Hier wird jeder Schritt einzeln erklärt, vor allem, warum er gemacht wird.
✦ Empfohlen: Standard – Die normale Erklärungstiefe passt zum Einstieg.
- 1
Teil a): Den Zahlenwert bestimmen
Die Großbuchstaben liegen im ASCII-Code lückenlos hintereinander. Mit dem Anker = 65 muss man nur noch abzählen, der wievielte Buchstabe gemeint ist.
\texttt{M} = 65 + 12 = 77
Zwischenergebnis
hat den Wert 77.
Vorsicht beim Abzählen: ist der erste Buchstabe, aber der Abstand zu ihm ist 0. ist der dreizehnte, also ist der Abstand 12.
- 2
Teil a): Die Zahl in Bits zerlegen
Ein Byte hat acht Stellen mit den Werten 128, 64, 32, 16, 8, 4, 2, 1. Man geht von links nach rechts und fragt jedes Mal: Passt dieser Stellenwert noch in den Rest?
77 - 64 = 13 \quad 13 - 8 = 5 \quad 5 - 4 = 1 \quad 1 - 1 = 0
Zwischenergebnis
Verwendet: 64, 8, 4, 1
- 3
Teil b): Vom Muster zur Zahl
Rückwärts ist es noch einfacher: Man addiert die Stellenwerte, an denen eine 1 steht.
01100001 ;\Rightarrow; 64 + 32 + 1 = 97
Zwischenergebnis
97, und das ist der Kleinbuchstabe .
- 4
Teil c): Warum Sortieren ohne Sprachwissen geht
Die Frage zielt darauf, dass die Reihenfolge nicht im Rechner steckt, sondern im Code. Weil die Buchstaben aufsteigend durchnummeriert sind, stimmt die Ordnung der Zahlen mit der Ordnung der Buchstaben überein. Der Rechner vergleicht Zahlen, mehr nicht.
Genau deshalb landen Großbuchstaben beim einfachen Vergleich vor allen Kleinbuchstaben (65 bis 90 gegen 97 bis 122), und Umlaute stehen ganz hinten. Wer eine sprachlich korrekte Sortierung will, braucht zusätzliche Regeln.
Übung 3
schwerEin Bildschirmfoto hat 1920 mal 1080 Bildpunkte.
a) Berechne den unkomprimierten Speicherbedarf bei 24 Bit Farbtiefe in Megabyte. b) Wie groß wäre dasselbe Bild bei 8 Bit Farbtiefe, und was ginge dabei verloren? c) Ein deutscher Text hat 5000 Zeichen, davon 200 Umlaute. Berechne die Größe in UTF-8 und vergleiche sie mit reinem ASCII. d) Begründe, warum die Aussage „UTF-8 braucht immer mehr Platz als ASCII“ falsch ist.
Tipp anzeigen
Zu c): In UTF-8 belegt ein ASCII-Zeichen 1 Byte, ein Umlaut 2 Byte.
Lösung anzeigen
a) Bildpunkte. Mal 24 Bit: Bit, geteilt durch 8: Byte, also rund 6,2 MB.
b) Bei 8 Bit: Byte, also rund 2,1 MB, ein Drittel. Verloren geht die Farbvielfalt: Statt 16,7 Millionen Farben stehen nur 256 zur Verfügung. Bei Fotos mit weichen Übergängen entstehen dadurch sichtbare Farbstufen, etwa im Himmel.
c) In UTF-8: Byte. In reinem ASCII wären es 5000 Byte, allerdings könnten die Umlaute dort gar nicht gespeichert werden. Der Aufpreis beträgt 4 Prozent.
d) Weil UTF-8 die 128 ASCII-Zeichen mit genau einem Byte speichert, und zwar mit demselben Muster wie ASCII. Ein reiner englischer Text ist in UTF-8 also byte-gleich groß. Mehr Platz braucht nur, was in ASCII überhaupt nicht darstellbar wäre. Der Vergleich „mehr Platz“ setzt stillschweigend voraus, dass beide dasselbe leisten, und das tun sie nicht.
Detaillierte Schritterklärung anzeigen
Hier wird jeder Schritt einzeln erklärt, vor allem, warum er gemacht wird.
✦ Empfohlen: Standard – Die normale Erklärungstiefe passt zum Einstieg.
- 1
a) Die Kette Bildpunkte – Bit – Byte – Megabyte
Man rechnet in einer festen Reihenfolge: erst die Anzahl der Bildpunkte, dann die Bits, dann die Byte. Punkte; mal 24 Bit sind Bit; geteilt durch 8 sind Byte, also rund 6,2 MB.
Zwischenergebnis
Rund 6,2 MB.
- 2
b) Was sich ändert, wenn nur ein Faktor kleiner wird
Von 24 auf 8 Bit wird genau ein Faktor gedrittelt, also drittelt sich der Bedarf: Byte, rund 2,1 MB. Verloren geht die Farbvielfalt, statt 16,7 Millionen Farben bleiben 256.
Zwischenergebnis
Rund 2,1 MB, also ein Drittel.
- 3
c) UTF-8 rechnen: nach Zeichenart getrennt
In UTF-8 belegt ein ASCII-Zeichen 1 Byte, ein Umlaut 2. Man trennt deshalb: gewöhnliche Zeichen zu 1 Byte plus Umlaute zu 2 Byte ergibt Byte. Reines ASCII käme auf 5000 Byte, könnte die Umlaute aber gar nicht speichern.
Zwischenergebnis
5200 Byte, ein Aufpreis von 4 %.
- 4
d) Die Behauptung „UTF-8 braucht immer mehr“ widerlegen
Sie ist falsch, weil UTF-8 die 128 ASCII-Zeichen mit genau einem Byte speichert, und zwar mit demselben Bitmuster wie ASCII. Ein rein englischer Text ist in UTF-8 also byte-gleich groß. Mehr Platz braucht nur, was in ASCII überhaupt nicht darstellbar wäre.
Zusammenfassung
Ein Bit unterscheidet zwei Zustände, Bit ergeben Muster, weil jedes weitere Bit die Anzahl verdoppelt. Acht Bit bilden ein Byte mit 256 Mustern. Vorsätze wie Kilo gibt es in zwei Zählweisen, dezimal mit 1000 und binär mit 1024, was den scheinbaren Größenverlust bei Festplatten erklärt. ASCII ordnet 128 Zeichen fortlaufende Nummern zu und macht dadurch Sortieren zu einem Zahlenvergleich; Unicode erweitert das auf jedes Zeichen der Welt, UTF-8 speichert häufige Zeichen weiterhin mit einem Byte. Bilder werden über und Farbtiefe codiert. Über allem steht ein Gedanke: Ein Bitmuster bedeutet nichts von sich aus. Bedeutung entsteht durch die Vereinbarung, nach der es gelesen wird.


