![]() |
Einführung Datenverarbeitungssystemevon Prof. Jürgen Plate |
Der allgemeine Umgang mit dem Dezimalsystem und dessen Bildungsgesetz lässt uns vergessen, daß verschiedenen Bildungsgesetze existieren können, z. B.:
Als Basis bezeichnet man die kleinste, nicht mehr durch
eine Ziffer darstellbare Zahl.
Am geläufigsten ist uns das Dezimalsystem mit der Basis 10
Die Festlegung ist rein willkürlich und vermutlich auf die Zahl der
Finger beider menschlicher Hände zurückzuführen.
Zahlzeichen der Azteken (Basis 20, Ziffernwertsystem),
Zahlzeichen der Inkas (Basis 10, Stellenwertsystem).
Die verkürzte Schreibweise durch Aneinanderreihung von Ziffern ist eine abkürzende Schreibweise der Summenformel. Damit kann jede positive und negative reelle Zahl dargestellt werden, indem jede Stelle der Ziffernfolge mit einer Zehnerpotenz gewichtet wird.
allgemein:
an an-1 ... a0 a-1 ... a-m = an·10n + an-1·10n-1 + ... + a0·100 + a-1·10-1 + ... + a-m·10-m
0,328 = 0 + 3·10-1 + 2·10-2 + 8·10-3
allgemein:
0,a-1 ... a-m = a-1·10-1 + ... + a-m·10-m
Radixschreibweise: Z = an an-1 ... a0 a-1 ... a-m
Potenzschreibweise: Z = an·10n + an-1·10n-1 + ... + a0·100 + a-1·10-1 + ... + a-m·10-m
Potenz-Summen-Schreibweise:
Prinzipiell kann jede ganze Zahl größer 1 Basis B eines Stellenwertsystems sein. In der Praxis finden aber nur wenige Werte Verwendung.
Zusammenfassung von 3 Dualstellen zu einer Oktalstelle (bessere
Lesbarkeit, kürzer zu schreiben, leicht umzurechnen)
Oktalsystem: Basis B = 8 und a ist aus
{0,1,2,3,4,5,6,7}, z. B. 101001dual = 51oktal.
Bei der Eingabe von Oktalzahlen müssen diese - zur
Unterscheidung von Dezimalzahlen - gekennzeichnet werden. Dies
geschieht durch Hinzustellen der Basis, z. B.: 1257(8)
Häufig (besonders bei Programmiersprachen) geschieht dies
auch durch Voranstellen von '@' oder Anfügen von 'O', 'Q', 'C' z. B.:
@154 154O 154Q 154C (bei C-Compilern auch durch führende Null).
Sedezimalsystem:
Basis B = 16 und a aus {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}, z. B.
101001dual = 29sedezimal. Übliche Darstellung der
eigentlich binären Information in einem Rechner
(Kurzschreibweise binärer Info). Kennzeichnung bei der
Programmierung durch Voranstellen von '$', '0x' oder Anfügen von 'H' (für
"hexadezimal") z. B.: $FFC2 FFC2H 0xFFC2. Gelegentlich wird eine führende
Null verwendet, wenn die Zahl mit einem Buchstaben beginnt.
Weitere, manchmal verwendete Zahlensysteme, sind das Ternärsystem (B = 3) und das Quinärsystem (B = 5). Es stellt sich nun die Frage, wie man Zahlen von einem Zahlensystem in ein anderes umrechnen kann.
anderes StellenwertsystemZ = an·Bn + an-1·Bn-1 + ... + a0·B0 + a-1·B-1 + ... + a-m·B-m
Eine andere Form der Darstellung ist das Hornerschema (hier nur für den ganzzahligen Teil):
Bei der Umwandlung ganzer Zahlen gibt es nur positive Potenzen des Basis B. Bei fortgesetzter Division durch die Basis B' des gesuchten Zahlensystems fallen die gesuchten Koeffizienten als Reste der ganzzahligen Division an. Die Division wird fortgesetzt, bis das Divisionsergebnis 0 geworden ist. Die Divisionsreste sind die Ziffern des Zielsystems in aufsteigender Reihenfolge (1. Rest = niederwertigste Ziffer, letzter Rest = höchstwertige Ziffer).
Hornerschema für den gebrochenen Teil:
Bei der Umwandlung von echten Brüchen wird nach dem gleichen Schema verfahren, nur wird hier fortgesetzt mit der Basis des Zielsystems multipliziert. Die ganzzahligen Anteile der einzelnen Multiplikationsschritte ergeben die Koeffizienten des Zielsystems. Die Rechnung ist zuende, wenn der gebrochene Anteil des Multiplikationsergebnisses 0 wird. Die ganzzahligen Anteile der Multiplikationen werden dann in absteigender Reihenfolge aufgeschrieben (1. Anteil = höchste Stelle).
Vorsicht: Ein endlicher Bruch in einem Stellenwertsystem ist nicht immer auch ein endlicher Bruch in einem anderen.
DezimalsystemZ = an·Bn + an-1·Bn-1 + ... + a0·B0 + a-1·B-1 + ... + a-m·B-m
Die Umwandlung erfolgt durch Auswertung der Summe, wobei die Koeffizienten und die Potenzen der Basis B im Dezimalsystem dargestellt werden.
Beispiel: Umwandlung aus dem Dualsystem
Z = 101,11(2) = ??(10)
Z = 1·22 + 0·21 + 1·20 + 1·2-1 + 1·2-2
Z = 4 + 0 + 1 + 1/2 + 1/4 = 5,75
Eine andere Möglichkeit ist wieder die Anwendung des Hornerschemas. Das oben dargestellte Verfahren der Dezimal-Dual-Umwandlung wird einfach umgekehrt. Beginnend bei der höchstwertigen Ziffer wird bei ganzen Zahlen mit der Basis des Ausgangssystems (dargestellt im Zielsystem) multipliziert und zur nachfolgenden Stelle addiert. Dies wird bis zur niederwertigsten Ziffer fortgesetzt. Das letzte Ergebnis ist die Zahl im Zielsystem.
Beispiel: 11011101(2) = ??(10)
Beispiel: 7C2(16) = ??(10)
Abbau zum Komma hin.
Beispiel: 0,1011(2) = ??(10)
Die behandelten Umwandlungsroutinen können hier genauso verwendet werden. Da die Rechenoperationen immer im Zielsystem durchgeführt werden, ist dies für uns zumindest ungewohnt. Es gibt aber ein einfacheres Verfahren, das über das Dualsystem führt. Alle Basen sind Zweierpotenzen:
3 Dualstellen = 1 Oktalstelle
| a | b | S | C |
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
Bei der letzten Operation entsteht ein Übertrag auf die folgende Stelle (Carry). Das Ergebnis ist nicht mehr einstellig darstellbar. Die Addition mehrstelliger Dualzahlen wird wie im Dezimalsystem stellenweise durchgeführt (Übertrag berücksichtigen).
Beispiel:
Für die Subtraktion einstelliger Dualzahlen D = a - b gilt:
| a | b | D | B |
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | -1 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 |
Bei der Operation 0 - 1 ist von der nächsthöheren Stelle zu "borgen" (Borrow). Die Subtraktion mehrstelliger Zahlen erfolgt wieder stellenweise.
Betrags-Vorzeichen-Form. Bei der
technischen Realisierung gibt es jedoch einige Nachteile. In der
Datenverarbeitung ist das Subtraktionsverfahren mit einem
"Borrow"-Signal von der nächsthöheren Stelle
nicht gut durchführbar. Daher führt man die Subtraktion
auf die Addition einer negativen Zahl zurück. Die Darstellung
negativer Zahlen erfolgt durch die sogenannte
Komplementdarstellung.
, wobei
das Komplement von b ist.
Es stellt sich nun sofort die Frage, wie man das Komplement einer Zahl erhält. Dazu wird die Gleichung erweitert:
a - b = a + (K - b) - K), wobei K die "Komplementärzahl" ist.
Beispiel:
Die Subtraktion von K zum Schluss kann man recht einfach durch Weglassen der vordersten Stelle beim Ergebnis realisieren. K ist im Prinzip beliebig wählbar, jedoch würde für K = 1000 eine Zahl in Komplementdarstellung nicht von einer natürlichen Zahl unterscheidbar. Wir treffen daher zwei Vereinbarungen:
Nun ist also auch ein negatives Ergebnis erkennbar und der Betrag (bzw. das Endergebnis) kann durch nochmaliges Komplementieren ermittelt werden. Interessant wird diese Methode jedoch erst im Dualsystem.


(n+1)-te Stelle hat VZ-Funktion.
Die Bildung des Einerkomplements geschieht durch Invertieren jeder einzelnen Stellen (sehr einfach). Es gibt jedoch zwei "Nullen", beispielsweise für n = 4: 0000 = +0, 1111 = -0. Vor allem bei EDV-Systemen wird deshalb das Zweierkomplement verwendet. Die Bildung kann auf zwei Wegen erfolgen:
0110 1100 X
1001 0011 1-Komplement
+ 1 1 addieren
= 1001 0100 2-Komplement
0110 1100 X
1001 0100 übernehmen/komplementieren
= 1001 0100 2-Komplement
Wertebereich bei n+1 Stellen (n Ziffern und VZ): -2n bis +2n-1
Beispiel: 3 Stellen und Vorzeichen
1000 -8
0111 +7 1001 -7
0110 +6 1010 -6
0101 +5 1011 -5
0100 +4 1100 -4
0011 +3 1101 -3
0010 +2 1110 -2
0001 +1 1111 -1
0000 0
Frage: Warim nicht -2n bis +2n?
Antwort: Der Wert 2n wäre 1000, die Darstellung passt nicht mehr
in 3 Stellen mit Vorzeichen
Verwechselung mit -8!
Die Gesamtheit der so dargestellten Zahlen nennt man konegative Zahlen (gesprochen "konegativ", kommt von "Komplement-negativ"). Der Vorteil der Komplementdarstellung von negativen Zahlen liegt in der Ausführbarkeit der Subtraktion als Addition.
B-Komplement:
Y - X = Y - (X + Bn) - Bn = Y + X - Bn
Bn = 1000...000 (n Nullen)
3 Ziffern und VZ)
Dez. Dual 1-kompl. 2-kompl. 0 0000 1111 0000 2 0010 1101 1110 5 0101 1010 1011 7 0111 1000 1001
Bei der Subtraktion wird das Komplement addiert und (bei pos. Ergebnis) der Übertrag in die n+1-te Stelle weggelassen. Bei negativem Ergebnis: Komplementdarstellung. Das Carry-Bit (Übertrag) wird gesetzt, wenn in der höchstwertigen Stelle ein Übertrag auftritt.
Wemm man bei dem oben angegebenen Zahlenbereich 5 + 7 addiert, ergibt sich folgende Rechnung:
0101
0111
----
1100
Das Ergebnis 1100 ist eindeutig negativ, nämlich -4. Es liegt
nicht im darstellbaren Zahlenbereich! Untersucht man die verschiedenen
Möglichkeiten unf fasst man die Erkenntnisse zusammen, ergibt sich
folgende Tabelle:
| Vorzeichen Operanden |
Vorzeichen Ergebnis |
Bereichs- überschr. |
|---|---|---|
| beide positiv |
positiv negativ |
nein ja |
| positiv negativ |
positiv negativ |
nein nein |
| beide negativ |
positiv negativ |
ja nein |
Merksatz: Wenn beide Operanden das gleiche Vorzeichen haben und das Ergebnis ein davon abweichendes Vorzeichen, dann gab es eine Bereichsüberschreitung (Overflow).
Die bisher gesammelten Erkenntnisse führen dann zur Rechenvorschrift für die Subtraktion durch Komplementaddition (B-Komplement):
Fehlermeldung.
Beispiel: 23 * 12 = 276
Das Ergebnis zweier n-stelliger Dualzahlen hat nahezu die doppelte Stellenzahl, nämlich 2n - 1.
Die Multiplikation von Dualzahlen kann durch Addition und Bitverschiebung vereinfacht werden ( Verschieben um eine Bitposition entspricht Multiplikation mit 2 (links) oder Division durch 2 (rechts). Alle Rechenanlagen besitzen Bit-Verschiebe-Befehle. Angefangen bei niederwertigsten Bit des Multiplikators wird fortlaufend der Multiplikand zum Ergebnisregister (das zu Beginn auf Null gesetzt wurde) addiert, wenn das entsprechende Bit des Multiplikators den Wert 1 besitzt und dann um eine Position nach links verschoben. Die stellenrichtige Addition wird also nur in Teilschritte zerlegt.
Beispiel: 9 * 13 = 117
stellenrichtige Addition)
Beispiel im Dezimalsystem: 651 / 5
X = Quotient * W + Rest
Die Gleichung ist nach jedem Durchlauf der Rechenschritte 3. bis
6. erfüllt.
Beispiel:
Ergebnis: Q(uotient) = 100, R(est) = 10
Die Zahl wird mit führenden Nullen dargestellt und
gegebenenfalls gerundet. Im obigen Beispiel reicht der darstellbare
Bereich von -99999999,999 bis +99999999,999. Der Nachteil liegt im
begrenzten Zahlenbereich
bei sehr kleinen Zahlen gehen durch
die Rundung Stellen verloren (0,0009 würde z. B. zu 0), sehr
große Zahlen sind nicht mehr darstellbar.
Gleitpunktzahlen, floating point numbers). Wegen der endlichen
Stellenzahl können reelle Zahlen nur unvollkommen dargestellt
werden, sie repräsentieren nur einzelne Punkte auf der reellen
Zahlengerade
Rundungsfehler.
Bei der Gleitpunktdarstellung wird die Zahl so gespeichert, daß der Radixpunkt immer zur ersten von Null verschiedenen Ziffer gleitet. Dies erreicht man durch Abspalten einer entsprechenden Potenz der Basis:
Z = M * BE, n ganzzahlig
M = 0.xxxxxxx..., 1/B <= M < 1
Da die Basis bekannt ist, kann die Zahl durch die Mantisse M und
den Exponenten E dargestellt werden.
halblogarithmische
Darstellung
normalisierte Darstellung. Die Anpassung der
GP-Zahl an die angegebene Darstellungsform wird als
"Normalisieren" bezeichnet.
Beispiel:
Z = 42.5456
0.425456 * 102
M = 425456, E = 2
Man bezeichnet E als Exponent (bzw. Charakteristik)
Größenordnung der Zahl und M als
Mantisse
Angabe der gültigen Zifferndarstellungen
Die Art der Darstellung von Mantisse und Exponent ist recht unterschiedlich. Für Mantisse und Exponent wird jeweils eine feste Stellenzahl vorgegeben, in der auch das Vorzeichen von Mantisse und Exponent untergebracht werden muss. Am üblichsten ist Betrags-Vorzeichen-Darstellung der Mantisse und Exponentendarstellung mit verschobenem Wertebereich (Charakteristik) so, dass der Wert der Charakteristik immer ³ 0 ist (so wird ein zusätzliches Bit für das Vorzeichen des Exponenten eingespart). Sie stellt also eine einfache Verschiebung des Wertebereichs dar und hat keinen Einfluss auf die Berechnung.
Beispiel:
Wertebereich Exponent: -128 ... 127
Charakteristik (C = E + V): 0 ... 255 (V = 128)
27.75 dez. = 11011.11 dual2. Methode:M = 0.1101111, E = 0101
M = 0.1101111, C = 1101
27.75 dez.M = 0.8671875, E = 5
M = 0.1101111, E = 0101
M = 0.1101111, C = 1101
bestimmte
relative Genauigkeit, z.B. 32-Bit-Mantisse (einschl. VZ)
31
Dualst.
9 Dezimalstellen. Reelle Zahlen werden also immer auf
die nächstgelegene GK-Zahl gerundet.
Beispiel für Gleitpunkt-Addition im Dualsystem:
(6 Stellen Mantisse, 4 Stellen Charakteristik)
a + (b + c) ≠ (a + b) + c
a * (b * c) ≠ (a * b) * c
(a + b) * c ≠ (a * c) + (b * c)
Einfaches Beispiel:
Beim Angleichen geht die letzte Stelle des ersten Summanden verloren.
Beispiel: DIN IEC 47B für Mikroprozessoren
Folge sind Rundungsfehler bei der Arithmetik
numerische Mathematik.
Die Darstellung erfolgt in Form von Gleitpunktzahlen (siehe
oben) oder als BCD-Gleitpunktzahlen (siehe unten).
Einige Rechner kennen Befehle zur BCD-Arithmetik (automatische Korrekturaddition).
| 00 nul| 01 soh| 02 stx| 03 etx| 04 eot| 05 enq| 06 ack| 07 bel|
| 08 bs | 09 ht | 0a nl | 0b vt | 0c np | 0d cr | 0e so | 0f si |
| 10 dle| 11 dc1| 12 dc2| 13 dc3| 14 dc4| 15 nak| 16 syn| 17 etb|
| 18 can| 19 em | 1a sub| 1b esc| 1c fs | 1d gs | 1e rs | 1f us |
| 20 sp | 21 ! | 22 " | 23 # | 24 $ | 25 % | 26 & | 27 ' |
| 28 ( | 29 ) | 2a * | 2b + | 2c , | 2d - | 2e . | 2f / |
| 30 0 | 31 1 | 32 2 | 33 3 | 34 4 | 35 5 | 36 6 | 37 7 |
| 38 8 | 39 9 | 3a : | 3b ; | 3c < | 3d = | 3e > | 3f ? |
| 40 @ | 41 A | 42 B | 43 C | 44 D | 45 E | 46 F | 47 G |
| 48 H | 49 I | 4a J | 4b K | 4c L | 4d M | 4e N | 4f O |
| 50 P | 51 Q | 52 R | 53 S | 54 T | 55 U | 56 V | 57 W |
| 58 X | 59 Y | 5a Z | 5b [ | 5c \ | 5d ] | 5e ^ | 5f _ |
| 60 ` | 61 a | 62 b | 63 c | 64 d | 65 e | 66 f | 67 g |
| 68 h | 69 i | 6a j | 6b k | 6c l | 6d m | 6e n | 6f o |
| 70 p | 71 q | 72 r | 73 s | 74 t | 75 u | 76 v | 77 w |
| 78 x | 79 y | 7a z | 7b { | 7c | | 7d } | 7e ~ | 7f del|
| 128 | 144 | 160 | 176 ° | 192 À | 208 Ð | 224 à | 240 ð |
| 129 | 145 | 161 ¡ | 177 ± | 193 Á | 209 Ñ | 225 á | 241 ñ |
| 130 | 146 | 162 ¢ | 178 ² | 194 Â | 210 Ò | 226 â | 242 ò |
| 131 | 147 | 163 £ | 179 ³ | 195 Ã | 211 Ó | 227 ã | 243 ó |
| 132 | 148 | 164 ¤ | 180 ´ | 196 Ä | 212 Ô | 228 ä | 244 ô |
| 133 | 149 | 165 ¥ | 181 µ | 197 Å | 213 Õ | 229 å | 245 õ |
| 134 | 150 | 166 ¦ | 182 ¶ | 198 Æ | 214 Ö | 230 æ | 246 ö |
| 135 | 151 | 167 § | 183 · | 199 Ç | 215 × | 231 ç | 247 ÷ |
| 136 | 152 | 168 ¨ | 184 ¸ | 200 È | 216 Ø | 232 è | 248 ø |
| 137 | 153 | 169 © | 185 ¹ | 201 É | 217 Ù | 233 é | 249 ù |
| 138 | 154 | 170 ª | 186 º | 202 Ê | 218 Ú | 234 ê | 250 ú |
| 139 | 155 | 171 « | 187 » | 203 Ë | 219 Û | 235 ë | 251 û |
| 140 | 156 | 172 ¬ | 188 ¼ | 204 Ì | 220 Ü | 236 ì | 252 ü |
| 141 | 157 | 173 | 189 ½ | 205 Í | 221 Ý | 237 í | 253 ý |
| 142 | 158 | 174 ® | 190 ¾ | 206 Î | 222 Þ | 238 î | 254 þ |
| 143 | 159 | 175 ¯ | 191 ¿ | 207 Ï | 223 ß | 239 ï | 255 ÿ |
große Platzverschwendung
(hier Zuordnung oft: "TRUE" = 0, "FALSE" ungleich 0).
8 Werte/Byte
Problem
des schnellen Zugriffs auf einen Wert.
Zum vorhergehenden Abschnitt |
Zum Inhaltsverzeichnis |
Zum nächsten Abschnitt |