InhaltVorheriges Kapitel Nächstes Kapitel

8 Zahlen und Codes

8.8 Alphanumerische Codes

Alphanumerische Codes dienen zur Darstellung von Zeichen, die Dezimalzahlen, Buchstaben des Alphabets sowie spezielle Zeichen (Sonderzeichen genannt) umfassen können.

Erste Codes dieser Art wurden entwickelt, um Texte mit Hilfe von Fernschreibern zu übermitteln. Die Notwendigkeit der Entwicklung umfangreicherer Codes entstand mit dem Anschluß dieser Fernschreiber an Digitalrechner.

Zu den wichtigsten Codes gehören:



8.8.1 Fernschreibcode Nr. 2

Der Fernschreibcode Nr. 2 (Murray-Code) ist ein 5-Bit-Code zur Anwendung in der Telegraphie. Auch in der Rechneranwendung hat dieser Code Bedeutung erlangt; Programme und Daten wurden lange Zeit in diesem Code auf Lochstreifen gespeichert.

Die ursprüngliche Form des Codes wurde 1880 von J.M.E. Baudot (1845-1903) erfunden und als Fernschreibcode Nr. 1 (CCITT-Code No. 1) bekannt. Später wurde von Donald Murray ein ähnlicher 5-Bit-Code entwickelt, der Fernschreibcode Nr. 2 (Murray-Code, CCITT-Code No. 2). Dieser Code wird auch heute fälschlicher-weise noch sehr oft als "Baudot-Code" bezeichnet.

Die Besonderheit dieses Codes liegt in der Erweiterung des darstellbaren Zeichenumfangs durch Benutzung spezieller Steuerzeichen.
Auf Grund der gewählten Codelänge von 5 Bits wären nur n = 25 = 32 Zeichen darstellbar, was nicht einmal ausreichen würde, um lediglich das Alphabet und die Ziffern 0 ­ 9 zu speichern. Abhilfe geschaffen wurde durch eine teilweise Doppelbelegung der Codes (engl. multi-case-coding, Tab. 8.17).

Um eine eindeutige Zuordnung sicherzustellen, kann mit zwei Steuerzeichen (LS und FS) entweder der Buchstabenmodus oder der Ziffernmodus ausgewählt werden. Ist einmal der Buchstabenmodus eingeschaltet, werden alle Codes als Buchstaben interpretiert; entsprechend werden im Ziffernmodus die Ziffern oder Sonderzeichen erkannt.

Code-Nr.
Dualcode
Buchstabe
Ziffer
1
11000
A
-
2
10011
B
?
3
01110
C
:
4
10010
D
WAY
5
10000
E
3
6
10110
F
(NA)
7
01011
G
(NA)
8
00101
H
(NA)
9
01100
I
8
10
11010
J
bell
11
11110
K
(
12
01001
L
)
13
00111
M
.
14
00110
N
,
15
00011
O
9
16
01101
P
0
17
11101
Q
1
18
01010
R
4
19
10100
S
'
20
00001
T
5
21
11100
U
7
22
01111
V
=
23
11001
W
2
24
10111
X
/
25
10101
Y
6
26
10001
Z
+
27
00010
CR
28
01000
LF
29
11111
LS
30
11011
FS
31
00100
space
32
00000
(unused)

Tab. 8.17: CCITT-Code No.2.


Bedeutung der in Tab. 8.17 verwendeten Abkürzungen:

WAY: Wer Da? (Who are you?)
bell:Klingel
CR: Wagenrücklauf (carriage return)
LF: Zeilenvorschub (line feed)
LS: Buchstabenumschaltung (letter shift)
FS: Ziffernumschaltung (figure shift)
space:Zwischenraum
(NA): nicht definiert, reserviert (not assigned)
(unused): nicht benutzt

8.8.2 ASCII

Der ASCII-Code (CCITT-Code No. 5) ist das wichtigste Mitglied einer Serie von 7­Bit-Codes, die zur Datenübertragung entwickelt wurden. Da es sich bei dieser Version des Codes um die nationale amerikanische Version handelt, wird er oft auch als US-ASCII bezeichnet.

Auf Grund der Informationseinheit von 7 Bits können insgesamt 128 Zeichen codiert werden. Da als rechnertechnische Grundeinheit 8 Bits gebräuchlich sind, wird der 7-Bit-Code eingebettet in 8-Bit-Bytes. Das zur Kodierung nicht benötigte Bit wird häufig zur Fehlerkontrolle eingesetzt (s.u. Parität).

Wie Tab. 8.18 zeigt, wurde der ASCII-Code sehr systematisch aufgebaut. Die ersten 32 Zeichen (hex. 00 ­ 1F) stellen sogenannte Steuerzeichen (engl. control codes) dar, die ähnliche Funktionen haben wie die entsprechenden Zeichen im Murray/Baudot-Code.
Einige wichtige Steuerzeichen werden in Tab. 8.19 näher erläutert. Die restlichen Zeichen sind "druckbare" Zeichen, d.h. Zeichen, die im Gegensatz zu den Steuerzeichen lesbar bzw. druckbar sind. Sie setzen sich aus den Buchstaben, Ziffern und Sonderzeichen zusammen.



HEX
ASCII
HEX
ASCII
HEX
ASCII
HEX
ASCII
00
NUL
20
SP
40
@
60
`
01
SOH
21
!
41
A
61
a
02
STX
22
"
42
B
62
b
03
ETX
23
#
43
C
63
c
04
EOT
24
$
44
D
64
d
05
ENQ
25
%
45
E
65
e
06
ACK
26
&
46
F
66
f
07
BEL
27
'
47
G
67
g
08
BS
28
(
48
H
68
h
09
HT
29
)
49
I
69
i
0A
LF
2A
*
4A
J
6A
j
0B
VT
2B
+
4B
K
6B
k
0C
FF
2C
,
4C
L
6C
l
0D
CR
2D
-
4D
M
6D
m
0E
SO
2E
.
4E
N
6E
n
0F
SI
2F
/
4F
O
6F
o
10
DLE
30
0
50
P
70
p
11
DC1
31
1
51
Q
71
q
12
DC2
32
2
52
R
72
r
13
DC3
33
3
53
S
73
s
14
DC4
34
4
54
T
74
t
15
NAK
35
5
55
U
75
u
16
SYN
36
6
56
V
76
v
17
ETB
37
7
57
W
77
w
18
CAN
38
8
58
X
78
x
19
EM
39
9
59
Y
79
y
1A
SUB
3A
:
5A
Z
7A
z
1B
ESC
3B
;
5B
[
7B
{
1C
FS
3C
<
5C
\
7C
|
1D
GS
3D
=
5D
]
7D
}
1E
RS
3E
>
5E
^
7E
~
1F
US
3F
?
5F
_
7F
DEL

Tab. 8.18: US-ASCII


HEX
ASCII
Bedeutung
02
STX
Textanfang (start of text)
03
ETX
Textende (end of text)
07
BEL
Klingel (bell)
09
HT
Tabulator (horizontal tabulator)
0A
LF
Zeilenvorschub (line feed)
0C
FF
Seitenvorschub (form feed)
0D
CR
Wagenrücklauf (carriage return)
1B
ESC
Umschaltung (Escape)

Tab. 8.19: Wichtige Steuerzeichen des ASCII-Codes

8.8.2.1 Parität, Paritätsprüfung

Der Standard-ASCII-Zeichensatz benötigt 7 Bits, um 128 Zeichen zu unterscheiden. Da auf Grund der schaltungstechnischen Realisierung im allgemeinen 8 Bits zur Verfügung stehen, kann ein zusätzliches Bit reserviert werden, um eine Fehlererkennung zu ermöglichen.

In Abb. 18 wird das MSB als sog. Paritätsbit (parity bit) vorgesehen.

p
        
 
6
      
0
ASCII-Code (7 Bits)

Abb. 8.18: ASCII-Code mit Paritätsbit (p)

Dieses Zusatzbit registriert, ob der gespeicherte ASCII-Code eine gerade oder ungerade Anzahl Einsen enthält. Man unterscheidet gerade und ungerade Parität (engl. even/odd parity):

Liegt gerade Parität vor, wird p = "0" gesetzt bei einer geraden Anzahl von Einsen im Code; bei einer ungeraden Anzahl von Einsen gilt entsprechend p = "1".
Bei ungerader Parität wird das Paritätsbit umgekehrt programmiert.

Dieses Paritätsbit kann zur "Paritätsprüfung" (eng. parity check) benutzt werden:
Bei einer Datenübertragung wird vom Sender die Parität bestimmt und mit den Daten dem Empfänger übermittelt. Dieser berechnet seinerseits die Parität und vergleicht sie mit dem empfangenen Wert.
Übertragungsfehler in einem Bit (1-Bit-Fehler) können auf diese Weise festgestellt werden.

8.8.3 Erweiterter ASCII-Code (PC8-Code)

Der PC8-Code (Tab. 8.20) stellt einen auf 8 Bit erweiterten ASCII-Code dar. In diesem erweiterten Zeichensatz wird das MSB in die Kodierung einbezogen, um die Anzahl der kodierbaren Zeichen auf 256 zu erhöhen.
Die Zeichenerweiterung dient insbesondere zur Definition länderspezifischer Sonderzeichen sowie semigraphischer Symbole.

Zur Kodierung der Zeichen in Tab. 8.20 wurde der 8-Bit-Dualcode in ein höher- und niederwertiges Nibble aufgeteilt:

MSB        LSB
7
4
3
0
höherwertiges
Nibble
niederwertiges
Nibble

Die hexadezimale Spaltenzählung der Tabelle entspricht dem höherwertigen Nibble, die Zeilenzählung dem niederwertigen Nibble.

0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0
NUL
DLE
SP
á
1
SOH
DC1
2
STX
DC2
®
®
3
ETX
DC3
©
©
4
EOT
DC4
5
ENQ
NAK
6
ACK
SYN
7
BEL
ETB
8
BS
CAN
9
HT
EM
A
LF
SUB
B
VT
ESC
C
FF
FS
D
CR
GS
E
SO
RS
F
SI
UP
_
DEL
SP

Tab. 8.20: PC8-Code (Erweiterter ASCII-Zeichensatz)

Hinweis:

Obwohl der PC8-Code 8 Bits benötigt, kann auch hier eine Paritätsprüfung wie beim ASCII-Code durchgeführt werden. Bei einer Datenübertragung kann dieses Bit sowohl vom Sender als auch vom Empfänger bestimmt werden, ohne daß eine Zwischenspeicherung des Wertes notwendig wäre.



8.8.4 EBCDI-Code

Der EBCDI-Code wurde ursprünglich als Erweiterung der BCD-Codes zur Anwendung in den System/360-Computern der Firma IBM entwickelt. Aus Kompatibilitätsgründen wurde dieser Code später auch auf andere Systeme und Rechner anderer Hersteller übernommen.
Wie der PC8-Code handelt es sich hierbei um einen 8-Bit-Code. Allerdings sind nicht alle der damit möglichen 256 Kodierungsmöglichkeiten ausgeschöpft worden; der EBCDI-Code läßt genügend Freiraum für Erweiterungen und anwenderspezifische Implementierungen.

Der Code ist dem ASCII-Code sehr ähnlich, leider gibt es aber weder mit dem ursprünglichen ASCII- noch dem neueren PC8-Code identische Teilmengen. Bei einer Codeumwandlung muß deshalb immer über Kodierungstabellen vorgegangen werden (siehe auch "UNICODE").


8.8.5 UNICODE

Daß der Zeichenvorrat der bisher behandelten Codes sehr begrenzt ist, zeigt ein kurzer Blick auf die wiedergegebenen Code-Tabellen.
Fremdsprachige Zeichensätze können nur zu einem sehr kleinen Teil berücksichtigt werden; um auch Zeichen z.B. der chinesischen oder indischen Sprachen einzubauen, ist eine nennenswerte Erweiterung des Codes unumgänglich.

Der UNICODE verfügt zur Zeichenkodierung über 16 Bits, wodurch der Zeichenvorrat im Vergleich zum PC8-Code von 256 auf 65.536 Zeichen erweitert wird. Abb. 8.19 zeigt in schematischer Form wie dieser sehr große Kodierungsbereich auf die unterschied-lichen Anwendungsbereiche verteilt wurde.


Abb. 8.19: Layout des UNICODE (nicht vollständig).

Drei Eigenschaften des UNICODE sind wichtig im Vergleich mit anderen Zeichencodes:



InhaltVorheriges Kapitel Nächstes Kapitel