Inhalt | Vorheriges Kapitel | Nächstes Kapitel |
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:
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.
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 |
Der ASCII-Code (CCITT-Code No.
5) ist das wichtigste Mitglied einer Serie von 7Bit-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.
Tab. 8.18: US-ASCII
Textanfang (start of text) | ||
Textende (end of text) | ||
Klingel (bell) | ||
Tabulator (horizontal tabulator) | ||
Zeilenvorschub (line feed) | ||
Seitenvorschub (form feed) | ||
Wagenrücklauf (carriage return) | ||
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.
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 | ||||||
Nibble | Nibble |
Die hexadezimale Spaltenzählung der Tabelle entspricht dem höherwertigen Nibble, die Zeilenzählung dem niederwertigen Nibble.
® | ® | |||||||||||||||
© | © | |||||||||||||||
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.
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").
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:
Inhalt | Vorheriges Kapitel | Nächstes Kapitel |