Zahlensysteme, Digitalarithmetik - Beuth Hochschule für Technik

Werbung
Informationen zu Grundlagen digitaler Systeme (GDS)
Lothar Müller
Beuth Hochschule Berlin
Zahlensysteme, Digitalarithmetik
1
Das Dezimalsystem
Wenn wir „im normalen Leben“ rechnen, machen wir das im Dezimalsystem, ohne uns darum besondere
Gedanken zu machen. Dabei ist dieses System nur eins von vielen.
Kennzeichnend für ein solches Zahlensystem (es handelt sich um ein Positionssystem) ist seine Basis.
Sie bestimmt den Wert einer Ziffer innerZahlensysteme lassen sich in 2 Gruppen einteilen:
halb einer Zahl und die Anzahl der benöPositions- und Additionssysteme.
Beim Additionssystem ergibt sich der Wert einer Zahl aus der Summe der
tigten verschiedenen Ziffern. Beim Dezieinzelnen Ziffern; zusätzlich können Differenzbildungen verwendet werden.
mal- oder dekadischen System ist die
Dagegen bestimmt sich beim Positionssystem der Wert einer Zahl nicht nur
aus den Werten der einzelnen Ziffern, sondern auch aus ihrer Position innerBasis 10 (gr. deka, lat. decem), d.h. es
halb der Zahl: Je weiter links eine Ziffer steht, desto größer ist ihr Wert.
gibt 10 verschiedene Ziffern {0...9}, die im
Alle heute verwendeten Zahlensysteme sind Positionssysteme.
Bekanntestes Beispiel für ein Additionssystem ist das römische Zahlensystem.
Bereich der natürlichen Zahlen die ersten
10 Werte (0...9) darstellen können. Sobald dieser Wertebereich überschritten wird, wird linksseitig eine zweite Ziffer aus dem gleichen Ziffern1
vorrat {0...9} verwendet, die jedoch entsprechend ihrer Position mit dem Wert 10 (= 10) bewertet wird.
Dadurch wird ein Zahlenraum von 0 bis 99 mit nur 2 Ziffern darstellbar. Wenn dieser Bereich nicht aus2
3
reicht, wird er durch weitere linksseitig angeordnete Ziffern vergrößert, deren Wertigkeit 10 , 10 usw. beträgt.
Allgemein ergibt sich für den Aufbau einer natürlichen Dezimalzahl Zd das folgende Schema:
Zd = dn • 10
n-1
+ dn-1 • 10
n-2
1
0
+ ... + d2 • 10 + d1 • 10
mit d = Dezimalziffer {0...9}
n = Anzahl der Ziffern.
Beispiel:
2
4
3
2
1
0
Zd = 10435 = 1 • 10 + 0 • 10 + 4 • 10 + 3 • 10 + 5 • 10
Andere Positionssysteme
Grundsätzlich sind neben dem Dezimalsystem beliebig viele andere Positionssysteme (mit von 10 verschiedenen Basen) denkbar; in
Im Grundsatz waren Positionssysteme bereits bei den Babyloniern in Gebrauch. Allerdings
wurde erst um 800 u.Z. in Indien die Ziffer 0 und damit die Möglichkeit von Leerstellen
der Praxis bedeutend sind für
eingeführt.
uns (als Informatiker) jedoch
Frühere Kulturen verwendeten als Zahlenbasis statt der 10 auch die 12 oder die 60.
nur Systeme, deren Basis 2
Grundlage für diese Wahl war offensichtlich die größere Universalität dieser Zahlen
(vielfältige Teilbarkeit). Überbleibsel dieser Systeme begleiten uns bis heute:
oder eine Potenz von 2 ist,
- die Einteilung des Jahres in 12 Monate
denn alle heutigen Digitalrech- die Einteilung des Tages in (2x) 12 Stunden à 60 Minuten à 60 Sekunden
- die Aufteilung des Kreisbogens in 360° à 60 Bogenminuten à 60 Bogensekunden
ner arbeiten mit dem Dual- oder
- auf 12 basierende Maße wie Dutzend (= 12) und Gros (= 12 Dutzend)
Binärsystem mit der Basis 2
- britische Maßeinheiten wie Fuß (= 12 Zoll), Yard (= 3 Fuß).
Das in der Informatik bedeutende Dualsystem mit der Basis 2 wurde um 1675 von Gottfried
(lat. duo: zwei; lat. bini: je zwei,
Wilhelm Leibniz entwickelt. Eine praktische Anwendung fand es jedoch erst in der Comein Paar). In diesem System
putertechnik des 20. Jahrhunderts.
gibt es nur 2 Ziffern {0,1}, und
n-1
jede Ziffer wird entsprechend ihrer Position mit 2 bewertet. Damit ergibt sich für den Aufbau einer natürlichen Binärzahl Zb das folgende Schema:
Zb = b n • 2
n-1
+ bn-1 • 2
n-2
1
0
+ ... + b2 • 2 + b1 • 2
mit b = Binärziffer {0,1}
n = Anzahl der Ziffern.
Beispiel:
File:
Date:
5
4
3
2
1
0
Zb = 101011 = 1 • 2 + 0 • 2 + 1 • 2 + 0 • 2 + 1 • 2 + 1 • 2
Zahlensysteme.Doc
01.04.2009
Seite 1 von 12
© Lothar Müller 2004...2009
Informationen zu Grundlagen digitaler Systeme
Zahlensysteme, Digitalarithmetik
Da die Zahlen im Dualsystem schnell groß und damit für uns Menschen unübersichtlich werden, fassen
wir mehrere Binärziffern zu Gruppen zusammen und stellen dafür neue Ziffern bereit. So gelangen wir zu
3
Zahlensystemen, deren Basen Potenzen von 2 sind; von diesen sind das Oktal- (Basis ist 8 = 2 , lat.
4
octo: acht) und insbesondere das Hexadezimalsystem (Basis ist 16 = 2 , gr. hex: sechs) von Bedeutung.
Die folgende Tabelle stellt wichtige Zahlensysteme im Vergleich vor und zeigt beispielhaft die Darstellung
verschiedener Zahlen sowie mögliche Notationen:
Darstellung der dezimalen Zahlen ...
System
Basis
Ziffern
1
2
8
10
15
16
65
Notation
102, %10, 10B
Dual-
2
0, 1
1
10
1000
1010
1111
10000
1000001
Oktal-
8
0, 1, ..., 7
1
2
10
12
17
20
101
108, [010]
Dezimal-
10
0, 1, ..., 9
1
2
8
10
15
16
65
1010, (ohne)
Hexadezimal-
16
0, 1, ..., 9,
A, B, ..., F
1
2
8
A
F
10
41
1016, $10, 10H,
0x10
3
Umrechnung zwischen verschiedenen Zahlensystemen
3.1
Umrechnung von Systemen mit der Basis n in das Dezimalsystem
Die Umrechnung erfolgt über die Ermittlung der (dezimalen) Werte der einzelnen Ziffern der Ausgangszahl mit der Basis n und die nachfolgende Addition dieser Werte.
Beispiele für n = 2 und n = 16:
101102
3.2
dezimal ergibt:
0
0•2 =
0
1
2
1•2 =
2
1•2 =
4
3
0
0•2 =
4
1 • 2 = 16
Summe: 22
3EA4C16
dezimal ergibt:
0
12 • 16 =
1
4 • 16 =
2
10 • 16 =
3
•
14 16 =
4
3 • 16 =
Summe:
12
64
2560
57344
196608
256588
Umrechnung vom Dezimalsystem in Systeme mit der Basis m
Hier erfolgt die Umrechnung durch fortlaufende Division der dezimalen Ausgangszahl durch die Basis m
des Zielsystems und rechtsbündige Aufreihung der Divisionsreste. Die Division wird fortgesetzt, bis das
Ergebnis 0 wird (wobei der dabei auftretende Rest noch berücksichtigt werden muss!).
Beispiele für n = 2 und n = 16:
3910
binär ergibt:
39 : 2 = 19 Rest 1
19 : 2 = 9 Rest 1
9 : 2 = 4 Rest 1
4 : 2 = 2 Rest 0
2 : 2 = 1 Rest 0
1 : 2 = 0 Rest 1
1
11
111
0111
00111
100111
39710
hexadezimal ergibt:
397 : 16 = 24 Rest 13
24 : 16 = 1 Rest 8
1 : 16 = 0 Rest 1
D
8D
18D
Fertig!
Fertig!
File:
Date:
Zahlensysteme.Doc
01.04.2009
Seite 2 von 12
© Lothar Müller 2004...2009
Informationen zu Grundlagen digitaler Systeme
Zahlensysteme, Digitalarithmetik
3.3
Umrechnung von einem System mit der Basis n in ein System mit der Basis m
Diese Umrechnung erfolgt am sinnvollsten in zwei Schritten:
- zunächst Umrechnung vom System mit der Basis n in das Dezimalsystem
- anschließend Umrechnung vom Dezimalsystem in das Zielsystem mit der Basis m.
Dies gilt nicht, wenn beide Basen 2 oder eine Potenz von 2 sind. Denn in diesem Fall können wir über
das Binärsystem und einfaches Umgruppieren der Binärziffern eine sehr einfache Umrechnung vornehn
men, weil jede Ziffer eines Systems mit der Basis 2 genau n Binärstellen entspricht. Eine linksseitig
möglicherweise auftretende unvollständige Gruppe wird dabei durch Einfügen führender Nullen ergänzt.
Beispiel einer Umrechnung der Hexadezimalzahl D74B16 in das Oktalsystem:
1. Umrechnung hexadezimal
binär:
(jede HEX-Ziffer entspricht 4 Binärziffern)
2. Rechtsbündiges Umgruppieren zu 3er-Gruppen:
3. Umrechnung binär
oktal:
D
7
4
B
1101 0111 0100 1011
001 101 011 101 001 011
1
5
3
5
1
3
(jede Oktalziffer entspricht 3 Binärziffern)
Das Ergebnis ist also 1535138.
4
Rechnen in nichtdezimalen Zahlensystemen
Grundsätzlich können wir alle aus dem Dezimalsystem bekannten Rechenregeln auch in anderen Zahlensystemen anwenden.
Die Addition erfolgt durch Untereinanderschreiben der Summanden und stellenrichtiges Addieren der
einzelnen Ziffern, wobei Überträge berücksichtigt werden müssen. Beispiele:
387710 + 145410 = ?
A15C16 + 6BD516 = ?
3877
+ 1454
A15C
+ 6BD5
5331
10D31
(Übertrag) 0 1 1 1
1 0 1 1
1001012 + 101102 = ?
+
100101
10110
0 0 1 0 0
111011
Die Subtraktion kann entsprechend erfolgen, wobei es aber zu Bereichsüberschreitungen kommen kann,
solange wir nur natürliche Zahlen verwenden (denn diese umfassen ja nicht die negativen Zahlen).
Die Multiplikation erfolgt ebenfalls wie vom Dezimalsystem bekannt.
Beispiel einer Multiplikation von zwei hexadezimalen Zahlen:
6C16 • B516 = ?
6C
•
B5
4A4
21C
4C5C
Die Division kann entsprechend dem aus dem Dezimalsystem bekannten Verfahren erfolgen, was jedoch
schwierig zu beherrschen ist. Außerdem tritt bei der Division häufig eine Überschreitung des Zahlenbereichs statt, solange wir keine gebrochenen Zahlen zulassen.
File:
Date:
Zahlensysteme.Doc
01.04.2009
Seite 3 von 12
© Lothar Müller 2004...2009
Informationen zu Grundlagen digitaler Systeme
Zahlensysteme, Digitalarithmetik
5
Ganze Zahlen
Die Erweiterung des Bereichs der natürlichen Zahlen um die negativen Zahlen ergibt den Zahlenbereich
der ganzen Zahlen. Sie ermöglichen es, Subtraktionen ohne die Gefahr einer Bereichsüberschreitung
durchzuführen. Falls der Subtrahend größer als der Minuend sein sollte (d.h. die Differenz ist negativ),
können beide Operanden vertauscht und das Ergebnis anschließend mit einem Minuszeichen versehen
werden.
Beispiel:
15C16 - 5D516 = ?
(Übertrag)
Der Subtrahend ist größer, deshalb beide Operanden vertauschen!
5D5
- 15C
0 0 1
479
Das Ergebnis ist also - 47916.
Anmerkung: Wir werden später eine andere Form der Subtraktion kennen lernen, die ohne
vorherigen Größenvergleich der Operanden auskommt.
Divisionen können auch im Bereich der ganzen Zahlen zu Bereichsüberschreitungen führen, da weiterhin
keine gebrochenen Zahlen zugelassen sind.
5.1
Integer-Zahlen
Der Begriff integer ist streng genommen lediglich die englische Bezeichnung für „ganze Zahl“. In der Informatik bezeichnet integer einen „Datentyp“, der ungebrochene Zahlen innerhalb eines definierten Wertebereichs umfasst. Damit wird der Endlichkeit realer Rechenwerke Rechung getragen. Integer-Zahlen
sind dem Wortsinn nach vorzeichenbehaftet (ganze Zahlen können positiv oder negativ sein), können
jedoch auch als vorzeichenlos (positiv) definiert sein (üblicherweise bezeichnet als signed bzw. unsigned).
In einem Zahlenraum verfügbare Zahlen können wir auf einem Zahlenstrahl darstellen, wie im folgenden
Beispiel für natürliche Zahlen dargestellt:
0
1
0110
6
5
1000
0111
0101
2
7
8
1001
1010
9
5
0100
1011
11
1100
12
3
13
2
0010
0001
File:
Date:
10
4
0011
10
1
0 15
0000
Zahlensysteme.Doc
01.04.2009
14
1101
1110
1111
15
20
Nur die Mathematik kennt einen Zahlenraum beliebiger
Größe! In realen Systemen ist der Zahlenraum dagegen
immer begrenzt. Um das Verhalten realer Rechenwerke
darzustellen, begrenzen wir den Zahlenstrahl auf die im
jeweiligen System verfügbaren Zahlen und formen durch
die Verbindung von Anfang und Ende des Strahls einen
Zahlenkreis.
Nebenstehend ist als Beispiel ein Zahlenkreis wiedergegeben, an dem das Verhalten eines Rechenwerkes für
natürliche 4-Bit-Zahlen gezeigt werden kann. Der
4
Wertebereich umfasst 2 = 16 Ziffern, nämlich 0...15 (dezimal) bzw. 0000...1111 (binär). Additionen können grafisch nachvollzogen werden, indem vom ersten Summand
ausgehend im Uhrzeigersinn „abgezählt“ wird; bei Subtraktionen muss entsprechend vom Minuend ausgehend
Seite 4 von 12
© Lothar Müller 2004...2009
Informationen zu Grundlagen digitaler Systeme
Zahlensysteme, Digitalarithmetik
gegen den Uhrzeigersinn gezählt werden. Zwischen den Werten 15 und 0 liegt die Bereichsgrenze, bei
deren Überschreitung fehlerhafte Ergebnisse entstehen. Zum Beispiel ergibt die Addition von 14 und 3
beim gezeigten Rechenwerk nicht 17, sondern 1. Dieses Ergebnis ist natürlich falsch, jedoch wird ein
reales 4-Bit-Rechenwerk (für natürliche Zahlen) genau dieses Ergebnis ermitteln!
Solange wir uns auf natürliche Zahlen beschränken, ist die Zuordnung dezimal
Zahlen werden im Rechenwerk binär dargestellt.
binär einfach: Dezimale
Um vorzeichenbehaftete Integerzahlen darstellen zu können, muss eine Vereinbarung zur Darstellung
negativer Zahlen getroffen werden. Üblicherweise wird dabei eine Binärziffer (ein „Bit“) für die Darstellung
des Vorzeichens verwendet.
Nahe liegend ist es, die ganz links stehende höchstwertige Binärziffer als Vorzeichen zu interpretieren:
0: Zahl ist positiv
1: Zahl ist negativ.
Damit behalten in einem 4-Bit-System die Binärziffern 0000...01112 ihren Wert von +0...+710, während die
Ziffern 1000...11112 die negativen Zahlen -0...-710 darstellen. Allerdings treten bei Anwendung dieser Notation diverse Probleme auf, die das Rechnen aufwendig werden lassen:
-
es existieren zwei Bereichsgrenzen
es wird zwischen „positiver“ und „negativer“ Null unterschieden
ein durchgehendes Rechnen zwischen positivem und negativem Zahlenraum ist nicht möglich
vor jeder Berechnung ist zunächst eine Bewertung des Vorzeichens erforderlich.
Um diese Nachteile zu vermeiden, wurde die 2er-Komplement-Darstellung eingeführt.
5.2
Komplementbildung
In jedem Zahlensystem mit der Basis B können mindestens 2 Komplemente (lat.: complementum: Vervollständigung(smittel)) gebildet werden, nämlich das B- und das (B-1)-Komplement. Das (B-1)-Komplement zu einer Zahl wird gebildet durch Subtraktion dieser Zahl von der höchsten Zahl, die bei gleichbleibender Anzahl der Ziffern gebildet werden kann. Das B-Komplement entsteht aus dem (B-1)-Komplement
durch Addition von 1.
Im Dezimalsystem ist die Basis 10, entsprechend existieren ein 10er- und ein 9er-Komplement. Letzteres wird gebildet durch Subtraktion von der Zahl 99999....9, das 10er-Komplement durch anschließende
Addition von 1. Das folgende Beispiel zeigt die Bildung dieser Komplemente zur Zahl 823510:
9999
- 8235
1764
+
= 9er-Komplement
1764
1
1765
= 10er-Komplement
Da die stellenweise Subtraktion immer von der höchsten im Zahlensystem vorkommenden Ziffer aus
erfolgt, treten dabei grundsätzlich keine Überträge auf. Bei der folgenden Addition von 1 können dagegen
Überträge auftreten. Ein möglicherweise an der höchstwertigen Stelle auftretender Übertrag bleibt unberücksichtigt (000010 hat in einem 4-stelligen Rechenwerk das 9er-Komplement 9999 und das 10er-Komplement 0000 (nicht: 10000)).
Durch Verwendung des Komplements kann eine „echte“ Subtraktion vermieden werden; stattdessen wird
das B-Komplement des Subtrahenden gebildet (eine Subtraktion, bei der keine Überträge auftreten können) und zum Minuend addiert, auftretende Bereichsüberschreitungen werden ignoriert.
File:
Date:
Zahlensysteme.Doc
01.04.2009
Seite 5 von 12
© Lothar Müller 2004...2009
Informationen zu Grundlagen digitaler Systeme
Zahlensysteme, Digitalarithmetik
In einem Rechenwerk für 4-stellige Dezimalzahlen stellt sich z.B. die Aufgabe 9516 - 8235 = 1281 wie
folgt dar:
1.
2.
10er-Komplementbildung von 8235 wie oben beschrieben (=1765)
Addition 9516 + 1765 = 11281.
Da das Rechenwerk jedoch nur 4-stellige Zahlen verarbeiten und darstellen kann, tritt die führende 1
nicht auf und das Ergebnis beträgt 1281.
Im hexadezimalen Zahlensystem werden entsprechend das 15er- und das 16er-Komplement gebildet,
im binären Zahlensystem das 1er- und das 2er-Komplement. Die folgenden Beispiele zeigen diese
Komplementbildungen für die Zahlen 6BC116 bzw. 101110112:
FFFF
- 6BC1
943E
+
11111111
- 10111011
= 15er-Komplement
1
943F
01000100
+
= 16er-Komplement
= 1er-Komplement
1
01000101
= 2er-Komplement
Beim Vergleich der Binärzahl mit ihrem 1er-Komplement fällt auf, dass die Ziffern des 1er-Komplements
jeweils genau den gegenteiligen Wert der Ursprungszahl haben, d.h. jede 0 wurde durch eine 1 ersetzt
und umgekehrt. Dieser Vorgang heißt Invertierung (oder: Inversion). Daraus folgt, dass die Erzeugung
des 2er-Komplements zu einer Binärzahl durch Invertierung dieser Zahl und anschließende Addition von
1 erfolgen kann, d.h. es wird keine Subtraktion benötigt.
5.3
Integer-Zahlen in 2er-Komplement-Notation
Auch bei dieser Notation gibt das höchstwertige Bit das Vorzeichen an:
0: Zahl ist positiv
1: Zahl ist negativ.
Im Unterschied zum weiter oben angeführten Verfahren
wird jedoch vereinbart, dass negative Zahlen im 2er-Komplement dargestellt werden. Damit ergibt sich für ein Rechenwerk für 4-stellige Binärzahlen der nebenstehend
abgebildete Zahlenkreis. Offensichtlich bestehen die zuvor
gefundenen Nachteile nicht mehr:
- es existiert eine Bereichsgrenze
(jetzt aber zwischen +7 und -8)
- es gibt nur eine Null
- ein durchgehendes Rechnen zwischen positivem
und negativem Zahlenraum ist möglich
- eine Bewertung des Vorzeichens vor der
Berechnung ist nicht erforderlich.
Der zuletzt genannte Punkt ergibt sich daraus, dass die
Subtraktion direkt als Addition der entsprechenden negativen Zahl vorgenommen werden kann.
File:
Date:
Zahlensysteme.Doc
01.04.2009
1000
0111
0110
6
0101
7 -8 -7
1001
1010
-6
5
0100
4
1100
-4
3
0011
1011
-5
-3
2
0010
0001
1
0 -1
0000
-2
1101
1110
1111
Seite 6 von 12
© Lothar Müller 2004...2009
Informationen zu Grundlagen digitaler Systeme
Zahlensysteme, Digitalarithmetik
Das folgende Beispiel zeigt die Vorgehensweise für die Rechnung 3 - 7 = - 4; sie wird ausgeführt als 3 +
(- 7) = - 4. Dies ergibt:
0011
+ 1001
(Übertrag)
0 1 1
1100
+ 310
+ (- 710)
- 410
Zusammengefasst stellen sich die Vorteile der 2er-Komplementdarstellung für negative Zahlen wie folgt
dar:
-
das Vorzeichen des Zahl ergibt sich direkt aus dem höchstwertigen Bit
positive und negative Zahlen können direkt addiert werden
die Subtraktion wird durch die Addition des negierten zweiten Summanden realisiert
die Negierung (=Bildung des 2er-Komplements) geschieht durch Invertierung und
anschließende Addition von 1
- d.h. das Rechenwerk muss keine Subtraktion beherrschen.
Als einziges Problem bleibt die Bereichsgrenze übrig, bei deren Überschreitung ungültige Ergebnisse
entstehen. Grundsätzlich kann der zulässige Zahlenbereich durch Einführung zusätzlicher Binärstellen
erweitert, jedoch niemals grenzenlos werden. Deshalb wird ein Indikator benötigt, der nach jeder Berechnung Auskunft über die Gültigkeit des Ergebnisses gibt.
5.4
Übertrag und Überlauf
Wird bei der Addition von zwei Zahlen der für das jeweilige Rechenwerk gültige Wertebereich überschritten, tritt ein Übertrag in die nächste (fiktive) Stelle auf, die im realen Rechenwerk nicht existiert. Dies
führt dazu, dass das Ergebnis der Addition als „nicht korrekt“ zu bewerten ist. Die nachfolgend dargestellten zwei Additionen von unsigned integer numbers machen den Sachverhalt deutlich; dabei beträgt
n
die Datenbreite 8 Bit, der Wertebereich (unsigned!) ist also 0...2 -1 (0...25510):
(Übertrag)
00110101
+ 10010111
0 0 1 1 0 1 1 1
11001100
+ 5310
+ 15110
+ 20410
01110101
+ 10010111
+ 11710
+ 15110
100001100
+ 26810
1 1 1 1 0 1 1 1
Übertrag
Im linken Beispiel tritt oberhalb der höchsten Binärstelle kein Übertrag auf, das Ergebnis liegt innerhalb
des verfügbaren Wertebereichs und ist damit korrekt. Im rechten Beispiel dagegen wird der Wertebereich
überschritten (268 > 255), wodurch oberhalb der höchsten Binärstelle ein Übertrag auftritt. Im Ergebnis ist
die daraus resultierende führende 1 durch einen senkrechten Strich abgetrennt, um zu symbolisieren,
dass das den Beispielen zugrunde liegende Rechenwerk über diese Stelle nicht verfügt. Vielmehr ermittelt es ein nur 8-stelliges Ergebnis, das hier 000011002 = 1210 beträgt und damit „nicht korrekt“ ist.
Allerdings muss das Ergebnis nicht zwangsläufig verworfen werden, vielmehr kann es im Rahmen einer
zusätzlichen Berechnung verwendet werden; denn das korrekte Ergebnis (26810) ergibt sich aus der Addition des durch den Übertrag repräsentierten Wertes 25610 und des ermittelten Ergebnisses (1210).
Beim Rechnen mit vorzeichenbehafteten Zahlen in 2er-Komplement-Darstellung ist der Übertrag als Indikator für die Gültigkeit der Ergebnisse nicht geeignet, wie die folgenden Beispiele für signed integer numn-1
n-1
bers zeigen. Die Datenbreite beträgt wieder 8 Bit, der Wertebereich (signed!) ist also -2 ...+2 -1
(-12810...+12710):
(Übertrag)
Überlauf!
File:
Date:
01010000
+ 01010111
0 1 0 1 0 0 0 0
10100111
Zahlensysteme.Doc
01.04.2009
+ 8010
+ 8710
-
8910
Kein
Überlauf
01110101
+ 10010111
+ 11710
- 10510
100001100
+ 1210
1 1 1 1 0 1 1 1
Seite 7 von 12
© Lothar Müller 2004...2009
Informationen zu Grundlagen digitaler Systeme
Zahlensysteme, Digitalarithmetik
Im linken Beispiel führt die Addition von zwei positiven Zahlen zu einem negativen und damit falschen
Ergebnis. Offensichtlich wurde der Zahlenbereich überschritten, ohne dass ein Übertrag auftrat!
Das rechte Beispiel enthält exakt dieselben Binärzahlen wie das weiter oben dargestellte Beispiel, wobei
der zweite Summand jedoch wegen der Darstellung im 2er-Komplement nicht +15110, sondern -10510
entspricht. Das erzielte Ergebnis (+1210) ist offensichtlich korrekt, obwohl hier ein Übertrag auftritt!
Beim Rechnen mit vorzeichenbehafteten Zahlen in 2er-Komplement-Darstellung wird als Indikator statt
des Übertrags der Überlauf verwendet. Beide Begriffe haben völlig unterschiedliche Bedeutungen, werden aber leicht verwechselt, weil sie ähnlich klingen. Diesen Nachteil haben die englischen Bezeichnungen nicht:
Übertrag
Überlauf
= Carry
= Overflow
(C, CY)
(OV, OF)
Die Bildung des Overflows kann auf zwei Arten erfolgen:
1. Es werden die Vorzeichen der beiden Summanden und des Ergebnisses verglichen:
Ein Overflow tritt auf, wenn beide Summanden dasselbe und das Ergebnis ein abweichendes Vorzeichen aufweisen, d.h. entweder beide Summanden positiv sind und das Ergebnis negativ oder
umgekehrt.
Die Vorzeichen ergeben sich direkt aus den Werten der jeweils obersten Binärstelle.
Bei HEX-Zahlen gilt die Zuordnung:
führende Ziffer im Bereich 0...7:
Zahl ist positiv,
führende Ziffer im Bereich 8...F:
Zahl ist negativ.
2. Es werden Carry-Input (Cin) und Carry-Output (Cout) der obersten Binärstelle verglichen:
Ein Overflow tritt auf, wenn Carry-In und Carry-Out verschieden sind.
Die erste genannte Methode ist für den menschlichen Betrachter die geeignetere, weil die Werte der Vorzeichen (= führenden Binärziffer) leicht abgelesen werden können. Die zweite Methode wird dagegen von
realen Rechenwerken verwendet, weil sie ohne großen Aufwand realisiert werden kann.
An den oben angeführten Beispielrechnungen können beide Methoden leicht nachvollzogen werden.
Reale Rechenwerke stellen die Informationen zum Auftreten von Carry und Overflow standardmäßig
bereit; es ist dann Aufgabe des jeweiligen Programms, diese Informationen abzufragen und daraus die
richtigen Schlüsse zu ziehen, wie im Folgenden angegeben:
Carry
unsigned integer numbers
signed integer numbers
6
Reelle Zahlen
6.1
Überblick
Overflow
Nein: Ergebnis korrekt
Ja: Bereichsüberschreitung!
ohne Bedeutung
ohne Bedeutung
Nein: Ergebnis korrekt
Ja: Bereichsüberschreitung!
Durch die Einführung der gebrochenen oder reellen Zahlen können alle vier Grundrechenarten inklusive
der Division angewandt werden, ohne dass es zu ungültigen bzw. nicht darstellbaren Ergebnissen kommen kann. Allerdings erfordert es einen erheblichen Mehraufwand, ein Rechenwerk so zu gestalten, dass
es neben den ganzen auch reelle Zahlen verarbeiten kann.
Grundsätzliches Merkmal einer reellen Zahl ist, dass sie über einen ganzen und einen gebrochenen Teil
verfügt, die durch das Komma (im englischen Sprachraum durch den Punkt) getrennt sind; im Dezimalsystem sprechen wir hier vom „Dezimalbruch“. Eine andere Form der Darstellung ist der („gemeine“)
Bruch. Letztere ermöglicht (im Rahmen der verfügbaren Auflösung) in vielen Fällen, in denen die
File:
Date:
Zahlensysteme.Doc
01.04.2009
Seite 8 von 12
© Lothar Müller 2004...2009
Informationen zu Grundlagen digitaler Systeme
Zahlensysteme, Digitalarithmetik
Schreibweise als Dezimalbruch scheitert, eine genaue Darstellung (Beispiel: 1/3 und 0,33333...). Allerdings entziehen sich viele reelle Zahlen in beiden Formen einer exakten Darstellung (Beispiel: ).
Bevor auf die Darstellung reeller Zahlen in digitalen Rechenwerken eingegangen wird, soll zunächst wie
zuvor bereits bei den ganzen Zahlen die Umrechnung zwischen verschiedenen Zahlensystemen behandelt werden.
6.2
Umrechnung zwischen verschiedenen Zahlensystemen
Bei der Umrechnung gebrochener Zahlen werden für Vor- und Nachkommateil unterschiedliche Regeln
angewandt. Für den Vorkommateil gelten dabei dieselben Regeln wie für ganze Zahlen. Die Regeln für
die Umwandlung des Nachkommateils werden im Folgenden dargestellt.
6.2.1
Umrechnung von Systemen mit der Basis n in das Dezimalsystem
Die Umrechnung erfolgt wie bei den ganzen Zahlen über die Ermittlung der (dezimalen) Werte der einzelnen Ziffern der Ausgangszahl mit der Basis n und die nachfolgende Addition dieser Werte. Dabei sind
beim Nachkommateil die Potenzen zur Zahlenbasis negativ.
Beispiele für n = 2 und n = 16:
0,10112
6.2.2
dezimal ergibt:
-4
1•2 =
-3
1•2 =
-2
•
0 2 =
-1
1•2 =
Summe:
0,0625
0,125
0
0,5
0,6875
0,E8016
dezimal ergibt:
-3
0 • 16 = 0
-2
8 • 16 = 0,03125
-1
•
14 16 = 0,875
Summe:
0,90625
Umrechnung vom Dezimalsystem in Systeme mit der Basis m
Hier erfolgt die Umrechnung des Nachkommateils durch Multiplikation der dezimalen Ausgangszahl mit
der Basis m des Zielsystems und linksbündige Aufreihung der auftretenden Vorkommastellen. Die Multiplikation wird mit den auftretenden Resten fortgesetzt, bis der Rest 0 wird.
Beispiel für n = 2:
0,687510
binär ergibt:
0,6875 • 2 = 1 Rest 0,375
0,375 • 2 = 0 Rest 0,75
0,75 • 2
= 1 Rest 0,5
0,5 • 2
= 1 Rest 0
1
10
101
1011
Fertig!
Das Ergebnis ist also 0,10112.
In vielen Fällen wird der Rest niemals 0; dann kann die Zahl nicht exakt umgerechnet werden bzw. es
muss eine Darstellung als Periode gewählt werden. Beispielsweise ergibt die Umrechnung von 0,110 in
das Binärsystem 0,00011001100110011...2 oder in periodischer Schreibweise 0,000112.
6.2.3
Umrechnung von einem System mit der Basis n in ein System mit der Basis m
Diese Umrechnung erfolgt wie bei ganzen Zahlen am sinnvollsten in zwei Schritten:
- zunächst Umrechnung vom System mit der Basis n in das Dezimalsystem
- anschließend Umrechnung vom Dezimalsystem in das Zielsystem mit der Basis m.
Dies gilt nicht, wenn beide Basen 2 oder eine Potenz von 2 sind. Denn in diesem Fall können wir über
das Binärsystem und einfaches Umgruppieren der Binärziffern eine sehr einfache Umrechnung vornehn
men, weil jede Ziffer eines Systems mit der Basis 2 genau n Binärstellen entspricht. Das Umgruppieren
File:
Date:
Zahlensysteme.Doc
01.04.2009
Seite 9 von 12
© Lothar Müller 2004...2009
Informationen zu Grundlagen digitaler Systeme
Zahlensysteme, Digitalarithmetik
erfolgt ausgehend vom Dezimalkomma nach beiden Seiten. Eine linksseitig möglicherweise auftretende
unvollständige Gruppe wird dabei durch Einfügen führender Nullen ergänzt, eine rechtsseitig auftretende
durch Anhängen nachgeordneter Nullen.
Beispiel einer Umrechnung der Hexadezimalzahl D7,4B16 in das Oktalsystem:
1. Umrechnung hexadezimal
binär:
D
7 ,
4
B
1101 0111 , 0100 1011
011 010 111 , 010 010 110
(jede HEX-Ziffer entspricht 4 Binärziffern)
2. Umgruppieren zu 3er-Gruppen:
(Vorkomma: rechtsbündig; Nachkomma: linksbündig)
3. Umrechnung binär
oktal:
3
2
7 ,
2
2
6
(jede Oktalziffer entspricht 3 Binärziffern)
Das Ergebnis ist also 327,2268.
6.3
Reelle Zahlen in der Digitaltechnik
6.3.1
Fest- und Gleitkommazahlen
Die Darstellung reeller Zahlen kann in einem digitalen Rechenwerk zweckmäßigerweise nur als „Binärbruch“ erfolgen, indem die Zahl nach Vor- und Nachkommateil getrennt wird. Dabei wird zwischen Festund Fließ- oder Gleitkommadarstellung unterschieden.
Bei der Festkommadarstellung (fixed point
numbers) wird für Vor- und Nachkommateil der
Zahl jeweils eine bestimmte, im Rahmen der
vorhandenen Rechnerarchitektur unveränderliche Anzahl von Binärstellen vorgesehen. Dies
erlaubt einen relativ einfachen Aufbau des
Rechenwerks, verhindert aber oft eine effiziente Nutzung der verfügbaren Ressourcen,
wenn Vor- oder Nachkommateil ihren jeweiligen Wertebereich überschreiten.
Die Festkommadarstellung stößt schnell an ihre Grenzen, wenn
entweder besonders große oder besonders kleine Zahlen verarbeitet
werden müssen. Im ersten Fall begrenzen die für den Vorkommateil
vorgesehenen Binärstellen den Wertebereich, ohne dass die Stellen des
Nachkommabereichs sinnvoll genutzt werden können. Im zweiten Fall
ist es umgekehrt. Deshalb werden Festkommarechner bevorzugt in
Fällen eingesetzt, in denen die Datenstrukturen vorab bekannt und
relativ konstant sind, z.B. in der Signalanalyse.
Gleitkommarechner kommen zum Einsatz, wenn größere
Wertebereiche abgedeckt werden müssen oder wenn wegen der
Universalität des Rechners vorab keine sinnvolle Aussage zur
vorgesehenen Verwendung gemacht werden kann; dies gilt
beispielsweise für den PC, dessen Prozessor eine Recheneinheit für
Gleitkommazahlen enthält.
Dagegen bietet die Gleitkommadarstellung
(floating point numbers) hier eine wesentlich größere Flexibilität, allerdings auf Kosten eines aufwendigeren Rechenwerkes. Bei der Gleitkommadarstellung liegt die Position des Kommas nicht fest, sondern
kann je nach Bedarf „verschoben“ werden, so dass eine Anpassung an die vorliegenden Zahlen in Hinblick auf ihren Werteumfang und die erforderliche Auflösung bzw. Genauigkeit möglich ist.
Die Darstellung von Gleitkomazahlen in realen Rechnersystemen war über einen langen Zeitraum nicht
einheitlich definiert. Stattdessen gab es die verschiedensten Formate, die sich in der Regel nach den
Hardwarestrukturen der jeweils vorliegenden Schaltkreise richteten. Damit war es nicht möglich, Programme plattformunabhängig zu gestalten.
1)
Erst in den 1980er Jahren wurden die heute allgemein üblichen Formate nach IEEE 754 definiert. Deren
wichtigste sollen im Folgenden dargestellt werden.
1
IEEE
File:
Date:
Institute for Electrical and Electronic Engineers
(ungefähr vergleichbar dem VDE in Deutschland)
Zahlensysteme.Doc
01.04.2009
Seite 10 von 12
© Lothar Müller 2004...2009
Informationen zu Grundlagen digitaler Systeme
Zahlensysteme, Digitalarithmetik
6.3.2
Darstellung von Gleitkommazahlen nach IEEE 754
a) Allgemeine Form der Darstellung einer Gleitkommazahl:
Die allgemeine Form der Darstellung einer Gleitkommazahl ist:
z = ±m • b±e
mit
z
m
b
e
= Zahl
= Mantisse
= Basis
= Exponent.
Sowohl Mantisse als auch Exponent sind vorzeichenbehaftet.
b) Vereinbarungen und Vereinfachungen:
Das Vorzeichen der Mantisse wird durch den binären Wert s (sign) dargestellt
s = 0: positiv
s = 1: negativ
Die Basis b des Exponenten wird nicht dargestellt. Sie ist immer 2 (Binärsystem!).
Die Mantisse wird normalisiert, so dass die führende 1 direkt vor dem Komma steht. Damit kann diese 1
in der Darstellung entfallen (es gibt im Binärsystem nur 2 Ziffern). Das Komma kann ebenfalls entfallen;
damit bleibt nur der Nachkommateil der Mantisse übrig. Er wird fraction f genannt.
Das Vorzeichen des Exponenten wird nicht explizit angegeben. Stattdessen wird der Exponent mit einem
Offset beaufschlagt (biased exponent), d.h. der darzustellende Wert des Exponenten ergibt sich aus der
Summe von Exponent und Offset. Diese wird als characteristic c bezeichnet.
Die größten und kleinsten Werte des für die characteristic verfügbaren Zahlenbereichs werden für spezielle Kodierungen reserviert (s.u.).
Daraus ergibt sich die folgende
c) Form der Darstellung einer Gleitkommazahl nach IEEE 754:
z = (-1)s • 1.f • 2c-o
mit
z
s
f
c
o
= Zahl
= sign
= fraction
= characteristic
= offset.
(Vorzeichen)
(Nachkommateil der normalisierten Mantisse)
d) Formate der Darstellung einer Gleitkommazahl nach IEEE 754:
Zum Zeitpunkt der Definition der Gleitkommazahlen nach IEEE754 waren 32 Bit-Rechnersysteme von
verschiedenen Herstellern verfügbar. Deshalb wurden in den Normungsprozess keine kleineren Formate
als 32 Bit einbezogen. Im einzelnen wurden die folgenden drei Formate definiert:
single precision
double precision
extended precision
File:
Date:
Zahlensysteme.Doc
01.04.2009
32 Bit
64 Bit
80 Bit.
Seite 11 von 12
© Lothar Müller 2004...2009
Informationen zu Grundlagen digitaler Systeme
Zahlensysteme, Digitalarithmetik
Die folgende Darstellung zeigt die Verteilung der einzelnen Komponenten einer floating point number auf
die in den einzelnen Formaten jeweils zur Verfügung stehenden Bits:
Format
Bit
sign
[s]
characteristic
[c]
fraction
[f]
offset
[o]
single precision
32
1
8
23
12710 (7F16)
double precision
64
1
11
52
102310 (3FF16)
extended precision
80
1
15
64
(mantisse!)
1638310 (3FFF16)
Anmerkung:
Beim Format extended precision ist abweichend von den anderen Formaten nicht die fraction, sondern die mantisse angegeben, also inklusive führender 1. Dies hat seinen Grund darin, dass dieses Format zum Zeitpunkt der
Normung bei vielen mathematischen Coprozessoren verbreitet war und quasi nachträglich genormt werden sollte.
Beispiel der Darstellung einer Zahl im IEEE 754-Format (single precision):
Ausgangszahl:
z = -37,7510
Umwandlung in binär:
= -100101,112 • 20
Normalisierung:
= -1,00101112 • 25
Codierung des Vorzeichens:
s = 12
Codierung des Exponenten,
dazu zunächst Umwandlung in binär:
e = 1012
plus Offset:
o = 011111112
ergibt characteristic:
c = 100001002
Übernahme der fraction:
f = 00101112
Ergebnis (zur besseren Übersicht gruppiert nach Funktionen und
innerhalb derer in Blöcken à 4 Bit):
z= 1
(s)
1000 0100
(c)
0010 1110 0000 0000 0000 000
(f)
e) Spezielle Formate:
Im beschriebenen Format können zwar sehr kleine (und sehr große) Zahlen dargestellt werden, nicht
jedoch die Zahl 0. Dazu müsste die Mantisse 0 werden, was sie wegen der (nicht dargestellten) führenden 1 nicht werden kann. Abhilfe schafft die folgende Vereinbarung:
characteristic c = 0 und fraction f = 0 bedeutet:
Zahl z = 0.
Als weitere Spezialfälle seien hier erwähnt:
characteristic c = 111...1 und fraction f = 0 bedeutet:
6.3.3
Zahl z = ±
(s bestimmt Vorzeichen).
Rechnen mit Gleitkommazahlen
Das Rechnen mit Gleitkommazahlen gestaltet sich ungleich schwieriger als mit ganzen oder Festkommazahlen. Es soll hier nur qualitativ dargestellt werden.
Zum Addieren bzw. Subtrahieren müssen zunächst die Exponenten beider Zahlen angeglichen werden.
Dazu wird der Exponent der kleineren Zahl soweit erhöht, dass er gleich dem der größeren Zahl wird. Die
Mantisse wird entsprechend nach rechts verschoben. Anschließend werden beide Mantissen addiert bzw.
voneinander subtrahiert. Abschließend wird das Ergebnis normalisiert, so dass wieder eine dem
IEEE754-Format entsprechende Zahl entsteht.
Beim Multiplizieren bzw. Dividieren werden die Mantissen der entsprechenden Operation unterzogen,
wobei auch das Vorzeichen des Ergebnisses ermittelt wird. Die Exponenten werden addiert bzw. subtrahiert. Das Ergebnis wird wieder normalisiert.
Bei allen genannten Berechnungen können Rundungsfehler entstehen, deren Behandlung ebenfalls in
IEEE 754 festgelegt ist.
File:
Date:
Zahlensysteme.Doc
01.04.2009
Seite 12 von 12
© Lothar Müller 2004...2009
Herunterladen