Zum Hauptinhalt springen

ASCII

Der American Standard Code for Information Interchange oder ASCII ist eine Zeichencodierung, die 1963 definiert wurde. Sie umfasst 95 normale Zeichen und 33 Steuerzeichen.

Steuerzeichen sind spezielle Zeichen, welche beispielsweise einen Zeilen- oder Seitenumbruch darstellen.

ASCII ist ein sehr weit verbreiteter Standard, um Text zu codieren. Er war ursprünglich für eine Codierung mit 7 Bit pro Zeichen ausgelegt. Heute verwenden wir pro ASCII-Zeichen aber meist 8 Bit (also 1 Byte), weil moderne Computer meistens nur mit ganzen Bytes als kleinstmögliche Dateneinheit arbeiten.

Die normalen ASCII-Zeichen sind in der folgenden Tabelle aufgeführt:

ASCII-Tabelle
ZeichenBinärHex
0010000020
!0010000121
"0010001022
#0010001123
$0010010024
%0010010125
&0010011026
'0010011127
(0010100028
)0010100129
*001010102A
+001010112B
,001011002C
-001011012D
.001011102E
/001011112F
00011000030
10011000131
20011001032
30011001133
40011010034
50011010135
60011011036
70011011137
80011100038
90011100139
:001110103A
;001110113B
<001111003C
=001111013D
>001111103E
?001111113F
ZeichenBinärHex
@0100000040
A0100000141
B0100001042
C0100001143
D0100010044
E0100010145
F0100011046
G0100011147
H0100100048
I0100100149
J010010104A
K010010114B
L010011004C
M010011014D
N010011104E
O010011114F
P0101000050
Q0101000151
R0101001052
S0101001153
T0101010054
U0101010155
V0101011056
W0101011157
X0101100058
Y0101100159
Z010110105A
[010110115B
\010111005C
]010111015D
^010111105E
_010111115F
ZeichenBinärHex
`0110000060
a0110000161
b0110001062
c0110001163
d0110010064
e0110010165
f0110011066
g0110011167
h0110100068
i0110100169
j011010106A
k011010116B
l011011006C
m011011016D
n011011106E
o011011116F
p0111000070
q0111000171
r0111001072
s0111001173
t0111010074
u0111010175
v0111011076
w0111011177
x0111100078
y0111100179
z011110107A
{011110117B
|011111007C
}011111017D
~011111107E
Steuerzeichen

Die ASCII-Codierung kennt noch 33 weitere Zeichen, welche zum Beispiel zur Steuerung von Druckern gebraucht werden. Man nennt sie deshalb Steuerzeichen. Darin enthalten sind Zeichen wie LF (Hex: AA) für einen Zeilenumbruch und DEL (Hex: 7F7F) um ein Zeichen zu löschen. Der Übersicht halber sind diese Zeichen in der obigen Tabelle nicht aufgeführt.

Konstante Zeichenlänge

Oben haben Sie gelernt, dass z.B. das Zeichen & dem ASCII-Wert 00100110200100110_2 entspricht. Diese Zahl beginnt aber mit zwei Nullen. Bei einer Dezimalzahl würden Sie normalerweise nicht 0023100023_{10} schreiben, sondern 231023_{10}, richtig?

Wäre es dann also nicht einfacher, wenn wir das Zeichen & als 1001102100110_2 codieren würden? Man würde damit ja auch Platz sparen, da jede Ziffer 1 Bit Speicher benötigt.

Das stimmt zwar, aber wir hätten damit auch ein Problem. Wir müssen eine Bitfolge auch wieder decodieren können, und dazu müssen wir wissen, wo ein Zeichen endet und wo das nächste beginnt. Wie würden Sie jetzt zum Beispiel bei der Bitfolge 10010101100001100001 herausfinden, welche ASCII-Zeichen hier drin stecken? Eine mögliche Aufteilung wäre 10010|101|100001|100001, eine andere Aufteilung wäre 1001010|1100001|100001. Welche ist nun gemeint? Wir können diese Bitfolge nicht eindeutig decodieren.

Keine Leerschläge

Denken Sie daran: Der Computer kennt in einer Bitfolge keine "Leerschläge". Er unterscheidet nur zwischen "Strom" (also 11) und "kein Strom" (also 00).

Deshalb verlassen wir uns bei der ASCII-Codierung darauf, dass wir für jedes Zeichen immer genau 8 Bits verwenden. So können Sie beispielsweise die Bitfolge 010010100110000100100001 in einfach Achter-Pakete aufteilen und erhalten 01001010|01100001|00100001. Wenn Sie dann die drei Werte 01001010, 01100001 und 00100001 in der ASCII-Tabelle nachschlagen, sehen Sie, dass hier der String Ja! codiert wurde. Mit dieser Regel lässt sich jede ASCII-codierte Bitfolge also eindeutig decodieren.

Aufgaben

Kurzaufagben

Beantworten Sie die folgenden Fragen und prüfen Sie jeweils Ihre Eingabe.

FrageAntwort
Wieviele Zeichen lassen sich mit 7 Bit maximal codieren?
Laden...
Welches ist der Code für das Zeichen A? Geben sie den Code als binäre und als dezimale Zahl an.
Laden...

Laden...
Für welches Zeichen steht der Code 01100001?
Laden...
Für welches Zeichen steht der Code 00110000?
Laden...
Zahlen und Ziffern

Ziffern (0, 1, etc.) können auch als Zeichen dargestellt werden. Der Code 00110001 steht in ASCII-Code für das Zeichen 1.

Wir müssen uns also immer bewusst sein, ob wir jetzt über die Zahl 11 (als binäre Zahl mit acht Stellen 00000001) oder das Zeichen 1 sprechen.

Damit es kein Durcheinander gibt, werden in den meisten Programmiersprachen die Anführungszeichen verwendet, wenn die Ziffern als Zeichen – sprich, als normaler Text – interpretiert werden sollen:

x = 1
y = "1"

Im obigen Python-Beispiel sieht das also folgendermassen aus:

x
ist ein Integer und entspricht somit der Zahl 00000001.
y
ist ein String und entspricht dem ASCII-Zeichen mit dem Code 00110001.
Text-Binär-Codierer

Auf 👉 dieser Seite können Sie einerseits normalen Text in die binäre Darstellung umwandeln (codieren) und andererseits binäre Codes zu normalem Text decodieren.


Teil A:

  1. Erstellen Sie zuerst mithilfe der ASCII-Tabelle (siehe oben) die binäre Darstellung den Text Das kostet 1 Fr..
  2. Gehen Sie zum Konverter (verlinkte Seite) und stellen Sie sicher, dass dort BINÄR ZU TEXT ausgewählt ist.
  3. Geben Sie die entstandene Bitfolge dort in das Feld Binärcode ein. Sie dürfen dabei nur die Ziffern 0 und 1 verwenden, also keine Leerschläge und Hochkommas.
  4. Drücken Sie Konvertieren.

Wenn Ihr Code stimmt, dann sehen Sie jetzt im untersten Feld den ursprünglichen Text. Hat's geklappt? Korrigieren Sie Ihren Binärcode, falls nötig.

Halten Sie den fertigen Binärcode hier fest:

Laden...

Teil B:
Bearbeiten Sie Ihren Binärcode wie folgt:

  1. Fügen Sie nach den ersten 8 Bits (also nach der Binärdarstellung des Buchstabens D) den Code 00001010 ein.
  2. Drücken Sie anschliessend nochmal auf Konvertieren.

Was bewirkt dieser Code? Geben Sie Ihre Antwort als Text ein und überprüfen Sie ihre Lösung.

Laden...