- Exzesscode
-
Der Exzesscode ist eine Binärkodierung, mit der sich vorzeichenbehaftete Zahlen binär repräsentieren lassen. Die Codierung basiert auf einer Wertebereichsverschiebung.
Üblicherweise werden positive Zahlen im Wertebereich 0 bis 2n-1 als n-stellige Binärzahlen wie folgt codiert (hier für den Wertebereich 0..7):
dezimal abgebildet binär abgebildet 0 000 1 001 2 010 3 011 4 100 5 101 6 110 7 111 Um die binäre Darstellung von negativen Zahlen zu ermöglichen, ist es erforderlich, den Wertebereich der Zahlen zu verschieben. Die Weite der Verschiebung ist für N > 0 immer eine Zweierpotenz 2N-1. Man spricht daher auch von einem Exzess-N-Code. Die Exzess-0-Codierung entspricht der Standardcodierung.
Im Folgenden sind alle möglichen Exzess-N-Codes für binär dreistellige Zahlen angegeben. Der Code selbst bleibt für alle N gleich, nur die entsprechenden Zahlen ändern sich.
Codierung Code 000 001 010 011 100 101 110 111 Exzess-0 0 1 2 3 4 5 6 7 Exzess-1 -1 0 1 2 3 4 5 6 Exzess-2 -2 -1 0 1 2 3 4 5 Exzess-3 -4 -3 -2 -1 0 1 2 3 Einen besonderen Stellenwert hat der Exzess-n-Code (also N = n, im Beispiel: Exzess-3). Er teilt den Wertebereich der Zahlen in zwei gleich große Hälften von negativen und positiven Zahlen (wenn man die 0 als positive Zahl auffasst). Bei binär vierstelligen Codes (Dezimal 0 bis 15) würde der Exzess-4-Code also die Zahlen von -8 bis 7 repräsentieren, bei fünfstelligen Codes wäre es der Exzess-5-Code und der Wertebereich von -16 bis 15. Man spricht im Fall N = n auch kurz von der Exzess-Codierung, lässt den Zahlenwert N also weg.
Um eine Zahl a zu codieren, wählt man die kleinste Zahl b im Wertebereich und bildet die Differenz: d = |a - b|. Das Ergebnis wird dann wie üblich codiert.
Umgekehrt decodiert man eine Exzess-N-codierte Zahl, indem man sie zunächst nach der üblichen Codierung in eine Zahl umwandelt und dann die kleinste Zahl des Wertebereichs addiert.
Rechenbeispiel
Aufgabe: Codiere die Zahl -79 in der Exzess-8-Codierung
Die Codelänge beträgt n = 8 also gilt für die übliche Binärdarstellung:
000000002 = 010
und
111111112 = 25510
Da die Zahl Exzess-8-codiert werden soll, verschiebt sich der Wertebereich auf:
00000000Exzess-8 = -12810
bzw.
11111111Exzess-8 = +12710
Codierung:
Die zu codierende Zahl ist a = -79. Die kleinste Zahl im Wertebereich ist b = -128 Die Differenz ist d = |-79 - (-128)| = 49 In der Standardcodierung ist d = 4910 = 001100012
Damit lautet die Lösung: a = -7910 = 00110001Exzess-8
Die Decodierung verläuft analog: 00110001 lässt sich nach der Standardcodierung zu 49 decodieren. Danach wird die kleinste Zahl des Wertebereichs addiert, hier -128, also: 49 - 128 = -79.Anwendung
Exzesscode ist tolerant bezüglich binärer Addition/Subtraktion und lexikalischem Größenvergleich. Im IEEE 754-Standard zur Darstellung von Gleitkommazahlen wird der Exponent in einer Exzesscode-ähnlichen Form kodiert. Integerwerte werden allerdings im Rechenwerk moderner Hardware zumeist im Zweierkomplement verarbeitet.
Siehe auch
Wikimedia Foundation.