Bunte Bits

3. Nullen und Einsen


3.4 Texte mit Nullen und Einsen

In der Einführung stand so eine komische Andeutung, dass all die tollen Sachen, die du vielleicht schon mit deinem Computer gemacht hast, wie Bilder malen, Texte schreiben, usw. für den Computer auch nichts anderes ist als rechnen mit Nullen und Einsen.

In den vorangegangenen Kapiteln haben wir ja schon gesehen, wie der Computer Zahlen mit Nullen und Einsen darstellt (vgl. Tabelle 2 bis Tabelle 5). Einer bestimmten Bitfolge wird eine bestimmte Zahl zugeordnet - sinnvoller Weise natürlich so, dass es auch mathematisch sinnvoll ist, nämlich auf die selbe Weise, wie wir auch im Dezimalsystem zählen.

Es hindert uns doch niemand daran, einer Bitfolge statt einer Zahl einen Buchstaben zuzuordnen, oder? Warum soll 01000001 nicht "A" bedeuten statt "65"?

Betrachten wir noch einmal die Addition (das Plus-Rechnen), die unser Super-Einfach-Computer im Abschnitt 3.1 durchgeführt hat: Das Ergebnis, also welche Lampe wann geleuchtet hat, hing doch nur davon ab, wie die Schalter gestellt waren, also welche Eingabe wir gemacht haben, und davon, wie unser Computer verdrahtet - man könnte auch sagen programmiert - war. Für die Schaltung war es völlig egal, welche Bedeutung wir den Schalterstellungen oder dem Leuchten der Lampe(n) zugeordnet haben; sie hat den Strom so geführt, wie eben die Verdrahtung war. Nur wir waren es, die die Verdrahtung genau so gemacht haben, dass die Bedeutung unseres Ergebnisses zur Bedeutung unserer Eingabe gepasst hat! Das hört sich jetzt an wie geschummelt, ist es aber nicht! Genau so arbeitet auch ein echter Computer!

Wir können uns doch jetzt eine einfache Aufgabe für die Bearbeitung von Texten einfallen lassen, zum Beispiel könnten wir aus einem großen Buchstaben einen kleinen Buchstaben machen wollen und umgekehrt. Damit unser Computer das kann, müssen wir nur festlegen, welches Bitmuster welchem Buchstaben entspricht, und müssen uns danach eine Verdrahtung überlegen, die bei jedem Großbuchstaben-Bitmuster an der Eingabeseite (Schalter) das zugehörige Bitmuster des Kleinbuchstabens an der Ausgabeseite (Lampen) erzeugt, bzw. umgekehrt.

Das ist einfacher als es sich anhört!

Fangen wir mit der Festlegung der Buchstaben an: Wenn wir bei den acht Bit bleiben, auf die sich die Erfinder des Computers irgendwann geeinigt haben, dann können wir 256 verschiedene Zeichen darstellen. Das Alphabet hat 26 Buchstaben; die gibt es als große und kleine Buchstaben, das macht zusammen schon mal 52 Stück. Dann kommen noch die Umlaute ä, ö und ü in groß und klein sowie das "ß" hinzu. Vermutlich werden wir auch mal ganze Sätze mit unserem Computer schreiben wollen; dafür brauchen wir dann auch noch Satzzeichen wie Punkt, Komma, Ausrufungszeichen, usw. und bestimmt finden wir es irgendwann toll, auch so komische Zeichen wie %, , $, & benutzen zu können. Außerdem gibt es mit Sicherheit auch noch Computerfreunde in anderen Ländern, die noch weitere besondere Zeichen brauchen. Aber für den Anfang werden uns 256 Zeichen erst mal genügen!

Es ist sinnvoll, dass alle Computer die selbe Zuordnung von Buchstaben zu Bitfolgen verwenden, denn sonst hätte ein Text, den man auf dem einen Computer geschrieben hat, auf einem anderen Computer eine ganz andere Bedeutung und dieser Satz sähe vielleicht so aus:

Kl43jsdc l rlk 2ehr Es'fhg e4$" öoijh rfghElSöfdh verjhgo i reobjGRnSh oer ergPner oer rönkFGbjs.renor ihg9h 25QQnön548p 5gi uARsfd

Damit das nicht passiert, hat man sich auf die gemeinsame Festlegung in Tabelle 6 geeinigt, die man ASCII genannt hat.
ASCII ist dabei eine Abkürzung und bedeutet "American Standard Code for Information Interchange". Das ist Englisch und bedeutet auf Deutsch: Amerikanischer Standard Code für den Informationsaustausch. Obwohl in dem Namen "Amerikanisch" steht, benutzt man das auf der ganzen Welt.

Ein Code ist eine Zuordnung von Zeichen zu anderen Zeichen oder zu einer bestimmten Bedeutung.

00000  32100000 33100001!
34100010"35100011#36100100$
37100101%38100110&39100111'
40101000(41101001)42101010*
43101011+44101100,45101101-
46101110.47101111/481100000
491100011501100102511100113
521101004531101015541101106
551101117561110008571110019
58111010:59111011;60111100<
61111101=62111110>63111111?
641000000@651000001A661000010B
671000011C681000100D691000101E
701000110F711000111G721001000H
731001001I741001010J751001011K
761001100L771001101M781001110N
791001111O801010000P811010001Q
821010010R831010011S841010100T
851010101U861010110V871010111W
881011000X891011001Y901011010Z
911011011[921011100\931011101]
941011110^951011111_961100000`
971100001a981100010b991100011c
1001100100d1011100101e1021100110f
1031100111g1041101000h1051101001i
1061101010j1071101011k1081101100l
1091101101m1101101110n1111101111o
1121110000p1131110001q1141110010r
1151110011s1161110100t1171110101u
1181110110v1191110111w1201111000x
1211111001y1221111010z1231111011{
1241111100|1251111101}1261111110~
161101000011621010001016310100011
164101001001651010010116610100110
167101001111681010100016910101001
170101010101711010101117210101100
173101011011741010111017510101111
176101100001771011000117810110010²
17910110011³1801011010018110110101µ
182101101101831011011118410111000
185101110011861011101018710111011
188101111001891011110119010111110
1911011111119211000000À19311000001Á
19411000010Â1951100001119611000100Ä
197110001011981100011019911000111
20011001000È20111001001É20211001010Ê
2031100101120411001100Ì20511001101Í
20611001110Î2071100111120811010000
2091101000121011010010Ò21111010011Ó
21211010100Ô2131101010121411010110Ö
215110101112161101100021711011001Ù
21811011010Ú21911011011Û22011011100Ü
221110111012221101111022311011111ß
22411100000à22511100001á22611100010â
2271110001122811100100ä22911100101
230111001102311110011123211101000è
23311101001é23411101010ê23511101011
23611101100ì23711101101í23811101110î
239111011112401111000024111110001
24211110010ò24311110011ó24411110100ô
2451111010124611110110ö24711110111
2481111100024911111001ù25011111010ú
25111111011û25211111100ü25311111101
2541111111025511111111

Tabelle 6: Der ASCII-Code

Lass dich von der Tabelle nicht verwirren! Jeweils drei Spalten, die durch einen Abstand getrennt sind, gehören zusammen: Links steht die Dezimalzahl, dann kommt das Bitmuster aus acht Bit, das dieser Zahl entspricht, und in der dritten Spalte steht der Buchstabe oder das Zeichen, das man dem Bitmuster zugeordnet hat.

Unsere Buchstaben A bis Z bzw. a bis z findest du in dem blau hinterlegten Bereich.

Wenn du aufmerksam hinsiehst, wirst du merken, dass gar nicht alle 256 möglichen Bitmuster in der Tabelle gezeigt sind (z.B. 1 bis 31 nicht). Das liegt daran, dass diese mit etwas belegt sind, das man gar nicht drucken kann, zum Beispiel Zeichen, die einem Drucker sagen, dass er ein neues Blatt nehmen oder eine neue Zeile beginnen soll. So etwas nennt man Steuerzeichen.

Das Zeichen, das der Null zugeordnet ist und das Zeichen für 32 sehen in der Tabelle zwar gleich aus, sind sie aber nicht: Die Null bedeutet wirklich Nichts, und 32 ist der Code für ein Leerzeichen.

Noch etwas komisches fällt dir vielleicht an der Tabelle auf: Sie enthält auch Bitfolgen, denen die Ziffern 0 bis 9 zugeordnet sind. Sie stehen in dem mit gelb hinterlegten Bereich.
Wofür brauchen wir das denn? Wir haben doch im Kapitel 3.2 schon Zahlen durch Nullen und Einsen dargestellt! Warum machen wir das hier noch einmal, und noch dazu mit einer anderen Zuordnung als wir sie vorher hatten? Die "9" ist in der ASCII-Tabelle "00111001" und nicht "00001001", wie wir sie beim Rechnen geschrieben hätten! Nun die Antwort ist die: Auch beim Schreiben eines Textes wollen wir ja unsere Ziffern schreiben können; allein in diesem Absatz, den du gerade gelesen hast, kommen die Ziffern 0, 1, 2, 3 und 9 vor, aber rechnen im eigentlichen Sinne wollen wir damit ja gar nicht. Immerhin waren die Leute, die sich die ASCII-Tabelle ausgedacht haben, so schlau, dass die rechte Hälfte (das rechte Nibble) der Bytes, mit denen Ziffern dargestellt werden, identisch ist mit der mathematischen Codierung der Zahlen: Die rechten vier Bits des ASCII-Codes für die 9 heißen 1001 und das entspricht genau dem Muster, das entsteht, wenn wir mit Nullen und Einsen bis Neun zählen. Hexadezimal geschrieben (vgl. Kapitel 3.3!) ist der ASCII-Code für die Ziffern 0 bis 9: 0x30, 0x31, 0x32, ..., 0x39; die rechte Stelle der Hexadezimalzahl entspricht also immer der dargestellten Ziffer.

Zurück zu unserer Aufgabe: Unser Computer soll das Bitmuster eines Großbuchstabens in das Bitmuster eines Kleinbuchstabens umrechnen. Auch hier lohnt es sich genauer hinzusehen: Groß- und Kleinbuchstaben sind in ihrem Bitmuster identisch, außer an der sechsten Stelle von rechts! Großbuchstaben haben dort eine Null, Kleinbuchstaben eine Eins stehen.

Der Computer, der unsere Aufgabe bewältigen kann, muss also nur das Bitmuster von unseren acht Eingabeschaltern auf die Ausgabelampen übertragen. Lampe Nummer Sechs muss dabei leuchten, wenn auf der Eingabeseite eine 0 steht und ausgeschaltet sein, wenn dort eine 1 steht.

Abbildung 9 zeigt einen Computer der das kann. Dargestellt ist die Umrechnung von "M" in "m". (Suche das Bitmuster für m und für M in Tabelle 6!)

Abbildung 9: Computer, der von Groß- auf Kleinbuchstaben umrechnet und umgekehrt
Abbildung 9:
Computer, der von Groß- auf Kleinbuchstaben umrechnet und umgekehrt

Beachte:

Der Schalter für Bit Nr. 6 (Pfeil) steht in Stellung "Null" also oben. Trotzdem leitet er den Strom. Würden wir von "m" in "M" umrechnen, müssten wir diesen Schalter nach unten in Stellung "Eins" drücken; in dieser Stellung wäre das Kabel dann unterbrochen, so dass auf der Ausgabeseite eine Null erscheint. Man sagt das Bit wird invertiert, also umgedreht: Am Ausgang (Lampe) steht immer das Gegenteil vom Eingang (Schalter).

Eine zweite Besonderheit: Eigentlich bräuchte unser Computer für diese Aufgabe nur sechs Schalter und sechs Lampen, weil die Bits Nummer 7 und Nummer 8 sowohl bei Groß-, als auch bei Kleinbuchstaben immer auf Null bzw. Eins stehen (vgl. Tabelle  6). Wenn du unseren Computer wirklich benutzen und mit den Schaltern Buchstabencodes eingeben würdest, könntest du feststellen, dass du diese beiden Schalter nie verstellen müsstest.

Und in der Tat: Alte Fernschreiber, das sind Geräte mit denen man früher Texte über eine Telefonleitung übertragen hat, haben nur mit fünf Bit gearbeitet: Sie haben nicht zwischen Groß- und Kleinschreibung unterschieden und konnten mit fünf Bit 32 verschiedene Zeichen darstellen. Heute braucht man diese Geräte nicht mehr; das Telefax hat sie völlig verdrängt!

Unser Computer zur Umrechnung von Groß- auf Kleinschreibung und umgekehrt funktioniert jedenfalls!

Das war jetzt ziemlich viel Theorie und wahrscheinlich glaubst du noch gar nicht, dass so etwas in einem echten Computer auch so geht. Wenn du einen PC hast, kannst du es gleich ausprobieren! Lass dir von jemandem helfen, wenn dir die Anleitung nicht klar ist, oder lies erst weiter; alles was dir fremd vorkommt und du nicht verstehst, wird später noch erklärt!

Experiment 1:
ASCII-Codes sind im PC versteckt!

Wo welche Taste sitzt, wird in Abbildung 10 gezeigt!

  1. Starte deinen Computer.
  2. Starte ein beliebiges Programm, bei dem man mit der Tastatur etwas eingeben kann, z.B. Word, Excel, Notepad, etc.
  3. Das linke der drei Lämpchen über dem Ziffernblock muss leuchten; dann kannst du den Ziffernblock zum Zahlen tippen benutzen. Falls das noch nicht der Fall ist, betätige die NumLock-Taste!
  4. Drücke die Alt-Taste und halte sie fest.
  5. Tippe jetzt einen dreistelligen ASCII-Cade aus Tabelle 6 auf dem Ziffernblock. Für ein "M" tippst du also beispielsweise "077", für eine geschweifte Klammer "{" tippst du "123" oder für das at-Zeichen "@" tippst du "064".
  6. Lasse die Alt-Taste wieder los! Das Zeichen erscheint!
Abbildung 10: PC-Tastatur
Abbildung 10: PC-Tastatur

Wenn du bei diesem Versuch ASCII-Codes verwendest, die größer sind als 127, kann es vorkommen, dass du andere Zeichen angezeigt bekommst als in Tabelle 6 gezeigt sind. Das liegt daran, dass es von dieser oberen Hälfte der Tabelle (Code Nummer 128 bis 255) verschiedene Versionen gibt, weil man mit den 255 möglichen Zeichen doch nicht ausgekommen ist, und man diesen Teil der Zuordnungen wechseln kann.

Was zeigt uns dieser Versuch? Nun: Der Computer interpretiert deine Zahleneingabe entsprechend der in Tabelle 6 gezeigten Zuordnung. Man hat sie ihm also einprogrammiert. Früher hat man dieses Verfahren mit der Alt-Taste gebraucht, um dem Computer Zeichen einzugeben, die nicht auf der Tastatur stehen. Heute bietet fast jedes Programm eine bequemere Möglichkeit, solche Sonderzeichen einzugeben.

Aber immerhin bist du jetzt sicher, dass dein Computer unsere Zuordnung der Buchstaben und Zeichen zu den Nullen und Einsen richtig versteht!

Noch ein kleiner Hinweis: Obwohl du mit dem Ziffernblock die selben Zahlen eingibst wie mit den anderen Zifferntasten unterscheidet dein Computer diese Tasten! Das kannst du daran erkennen, dass das Experiment mit den anderen Zifferntasten nicht funktioniert!



3.3 Bits und Bytes für Menschen - Das 16er-System Inhaltsverzeichnis
Index
3.5 Bilder mit Nullen und Einsen