Skip to content

Interpretation von ASCII-Codes als Zahlen

Wenn man ASCII-Tabellen im Internet anschaut, enthalten diese häufig nicht nur einen binären Code, sondern auch einen dezimalen Zahlencode. Die Dezimalzahl ergibt sich, wenn man die Bitfolge als Zahl im binären Zahlensystem interpretiert. So wird der Großbuchstabe A beispielsweise mit der Zahl 65 codiert, der Großbuchstabe B mit 66 usw. Die Zuordnung zwischen den Zeichen und den Bitfolgen aus Nullen und Einsen scheint also nicht ganz willkürlich zu sein. Um das System dahinter zu verstehen, müssen wir uns unser dezimales und das binäre Zahlensystem etwas genauer anschauen.

Interpretation von Zahlen im Binärsystem

Wir sind es gewohnt, im Dezimalsystem (Zehnersystem) zu rechnen. Dabei hängt der Wert einer Ziffer davon ab, an welcher Stelle die Ziffer in einer Zahl steht. In der Grundschule haben wir gelernt, dass die letzte Ziffer ganz rechts die Anzahl der Einer angibt, dann kommen links daneben die Zehner, die Hunderter usw. Die Zahl 3278 wurde in eine Stellenwerttabelle eingetragen. Der Wert der Zahl 3278 ergibt sich also, indem wir sie so interpretieren, dass wir 3 Tausender, 2 Hunderter, 7 Zehner und 8 Einer addieren: 3 • 1000 + 2 • 100 + 7 • 10 + 8 • 1 = 3000 + 200 + 70 + 8 = 3278

StellenT(ausender)H(underter)Z(ehner)E(einer)
Wert1000 = 103100 = 10210=1011 = 100
Beispiel3278

Da uns die Ziffern 0 bis 9 zur Verfügung stehen, ergibt sich für die 10 ein Übertrag zur nächsten Stelle. Die Werte der einzelnen Stellen ergeben sich aus den 10er Potenzen. Im binären Zahlensystem stehen uns nur die Ziffern 0 und 1 zur Verfügung. Ein Übertrag zur nächsten Stelle ergibt sich daher schon für die Zahl 2, die binär als 10 dargestellt wird. Die Werte der einzelnen Stellen ergeben sich aus den 2er Potenzen. Wenn wir die 2er Potenzen in unserem dezimalen Zahlensystem darstellen, können wir eine binäre Zahl in eine dezimale Zahl umrechnen: (1101)2 = 1 • 8 + 1• 4 + 0 • 2 + 1 • 1 = 8 + 4 + 1 = 13

StellenAchterViererZweierEiner
Wert8 = 234 = 222=211 = 20
Beispiel1101

Damit man weiß, dass ob es sich um eine Zahl im Binärsystem oder im Dezimalsystem handelt, schreibt man eine kleine 2 bzw. 10 als Index an die Zahl: (1101)2 = (13)10

Aufgabe 1:

Trage den ASCII-Code für die Großbuchstaben C, K und Z und für das Leerzeichen in eine binäre Stellenwerttabelle ein. Berechne anschließend, welcher Zahl der jeweilige Code im Dezimalsystem entspricht, wenn man ihn als binäre Zahl interpretiert.

Aufgabe 2:

Der 16-Bit-Unicode verwendet 16 Bit pro Zeichen und ist nach dem ASCII-Code entstanden, um auch Sonderzeichen verschiedener Sprachen codieren zu können.

  1. Auch im Unicode soll sich der Zahlenwert der binären Codierung der Zeichen, die bereits im ASCII-Code enthalten sind, nicht verändern. Gib an, wie der 16-Bit Unicode des Großbuchstabens A lauten muss.
  2. Berechne, wie viele verschiedene Zeichen sich mit 8 Bit und mit 16 Bit jeweils codieren lassen.

Aufgabe 3:

In einer Spielshow beeindruckt ein Junge damit, dass er Wörter, die als ASCII-Code gegeben sind, sehr schnell im Kopf decodieren kann. Hat er dazu den Code für jeden Buchstaben auswendig gelernt oder geht es vielleicht einfacher? Schau dir die binären Codes der ASCII-Tabelle für die Groß- und die Kleinbuchstaben noch einmal genau an. Vergleiche auch die Codes der Großbuchstaben und der zugehörigen Kleinbuchstaben.

Dezimalzahlen als Binärzahlen darstellen

In manchen Codetabellen für den ASCII-Code werden nur die Dezimalzahlen angegeben. Es ist auch möglich, zu einer Dezimalzahl die entsprechende Binärzahl zu bestimmen, um so den passenden binären Code herauszufinden: Wir suchen zunächst nach der größten Zweierpotenz, die in unsere Dezimalzahl passt. Bei der 78 (ASCII-Code für das große N) wäre das z. B. 26 = 64. Somit wissen wir, dass die Ziffer an der Position für 26 eine 1 sein muss und dies die vorderste Stelle ist:

2er-Potenz26252423222120
Wert6432168421
Beispiel1

Außerdem erhalten wir einen Rest von 78 - 64 = 14, der mithilfe der restlichen Stellen dargestellt werden muss. Wir füllen nun die Stellenwerttabelle beginnend bei der 64 von links nach rechts auf. Da jede Stelle nur die Ziffer 1 oder 0 haben kann, müssen wir für jede Stelle entscheiden, ob ihr Wert in den verbleibenden Rest passt oder nicht. 32 und 16 passen nicht in den Rest 14, daher tragen wir bei beiden Stellen eine 0 ein:

2er-Potenz26252423222120
Wert6432168421
Beispiel100

Die 8 passt in den Rest 14, daher tragen wir hier eine 1 ein und erhalten den neuen Rest 14 – 8 = 6:

2er-Potenz26252423222120
Wert6432168421
Beispiel1001

Die 4 passt in den Rest 6, daher tragen wir hier eine 1 ein und erhalten den neuen Rest 6 – 4 = 2:

2er-Potenz26252423222120
Wert6432168421
Beispiel10011

Die 2 passt in den Rest 2, daher tragen wir hier eine 1 ein und erhalten den neuen Rest 2 – 2 = 0:

2er-Potenz26252423222120
Wert6432168421
Beispiel100111

Anhand des Restes 0 erkennen wir, dass wir die Zahl vollständig in Summanden zerlegt haben, die den Stellen im Binärsystem entsprechen: 78 = 64 + 8 + 4 + 2 Für die verbleibenden Stellen, hier die letzte Stelle, können wir daher eine 0 eintragen:

2er-Potenz26252423222120
Wert6432168421
Beispiel1001110

Die Zahl 78 entspricht im Binärsystem also der Zahl 100 1110: (78)10 = (1001110)2

Aufgabe 4:

  1. Bestimme die Binärdarstellung der Zahlen 99 und 50. Welche Zeichen codieren diese Zahlen gemäß des ASCII-Codes?
  2. Justus behauptet: „Ich muss mir nur merken, dass der Großbuchstabe A im ASCII-Code mit der Zahl 65 und der Kleinbuchstabe a mit der Zahl 97 codiert wird, dann kann ich mir die binäre Codierung aller Groß- und Kleinbuchstaben herleiten.“ Nimm Stellung.

Aufgabe 5:

Begründe: Wenn man Daten mithilfe von Zahlen beschreiben bzw. codieren kann, lässt sich daraus ein Binärcode ableiten.