Exzesscode
Der Exzesscode oder auch Überschuss-Code ist eine Binärkodierung, mit der sich vorzeichenbehaftete Zahlen binär repräsentieren lassen. Die Codierung basiert…
Der Exzesscode oder auch Überschuss-Code 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 bis als -stellige Binärzahlen wie folgt codiert (hier für den Wertebereich ; Standardkodierung):
| 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, wird hierbei der Wertebereich der Zahlen verschoben. Die Weite der Verschiebung ist normalerweise im Bereich , wobei und ist. Man spricht daher auch von einem Exzess-k-Code. Nach dieser Terminologie entspräche ein Exzess-0-Code gar keiner Exzess-Codierung, also der o. g. Codierung für ausschließlich positive Zahlen.
Im Folgenden sind die gebräuchlichen Exzess-k-Codes für binär dreistellige Zahlen angegeben.
| Codierung | Verschiebung | Code | |||||||
|---|---|---|---|---|---|---|---|---|---|
| 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 | ||
| Exzess-0 | 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| Exzess-1 | 1 | −1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
| Exzess-2 | 2 | −2 | −1 | 0 | 1 | 2 | 3 | 4 | 5 |
| Exzess-3 | 3 | −3 | −2 | −1 | 0 | 1 | 2 | 3 | 4 |
| Exzess-4 | 4 | −4 | −3 | −2 | −1 | 0 | 1 | 2 | 3 |
In der nächsten Tabelle sind einige mögliche Exzess-k-Codes für binär vierstellige Zahlen aufgelistet.
| Codierung | Verschiebung | Code | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 | ||
| Exzess-0 | 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| Exzess-1 | 1 | −1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| Exzess-2 | 2 | −2 | −1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| Exzess-3 | 3 | −3 | −2 | −1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| Exzess-4 | 4 | −4 | −3 | −2 | −1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| Exzess-8 | 8 | −8 | −7 | −6 | −5 | −4 | −3 | −2 | −1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Historische Bedeutung hat der (4-Bit-)Exzess-3-Code, der mit dem Exzess-3 in der obigen Tabelle identisch ist – er bietet Vorteile bei der Darstellung von und dem Rechnen mit Dezimalzahlen.
Einen sehr wichtigen und besonderen Stellenwert hat hier der Exzess-k-Code, der hier im obigen Beispiel um acht Stellen verschoben ist (also allgemein , im Beispiel: Exzess-8)[1]. Er teilt den Wertebereich der Zahlen in zwei gleich große Hälften von negativen und nichtnegativen Zahlen. Bei binär vierstelligen Codes (Dezimal 0 bis 15) repräsentiert der Exzess-8-Code also die Zahlen von −8 bis 7, bei fünfstelligen Codes wäre es der Exzess-16-Code und der Wertebereich von −16 bis 15. Man spricht im Fall auch kurz von der Exzess-Codierung, lässt den Zahlenwert k also weg. Wenn zum Beispiel beim Exponenten von der Exzess-Darstellung die Rede ist, ist in fast allen Fällen dieser ausgeglichene Exzesscode (halb negativ und halb nichtnegativ) gemeint.
Um eine Zahl a zu codieren, wählt man die kleinste Zahl b im Wertebereich und bildet die Differenz: . Das Ergebnis wird dann wie üblich codiert.
Umgekehrt decodiert man eine Exzess-k-codierte Zahl, indem man sie zunächst nach der üblichen Codierung in eine Zahl umwandelt und dann die kleinste Zahl des Wertebereichs addiert.
Rechenbeispiel
Im folgenden Rechenbeispiel geht es nur um den sozusagen ausgeglichenen Exzesscode (dies ist der Fall bei ), der die Zahlen gleichmäßig in negative und nichtnegative teilt.
Aufgabe: Codiere bei 8 Bits die Zahl −79 in der Exzess-128-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-128-codiert werden soll, verschiebt sich der Wertebereich auf:
00000000Exzess-128 = -12810
bzw.
11111111Exzess-128 = +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-128
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
Einzelnachweise
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.