Z - Hochschule Ravensburg

Werbung
Hochschule
Ravensburg-Weingarten
Fakultät Technologie und Management Informationsverarbeitung
Vorlesung zur Datenverarbeitung 1
Zahlensysteme
Inhalt
2
ZAHLENSYTEME ..........................................................................................................................................2-2
2.1
ZAHL .........................................................................................................................................................2-2
2.2
ZAHLENDARSTELLUNG .............................................................................................................................2-3
2.2.1
Zahlensysteme für die EDV.................................................................................................................2-5
2.2.2
Umwandlung (Konvertierung) ............................................................................................................2-6
2.2.2.1
Konvertierung von Dualzahlen in Oktal- bzw. Hexadezimalzahlen ........................................................2-7
2.2.2.2
Konvertierung von Dual-, Oktal- bzw. Hexadezimal- in Dezimalzahlen ................................................2-8
2.2.2.2.1
Ganze rationale Funktionen .................................................................................................................2-8
2.2.2.2.2
Anwendung des Hornerschemas zur Konvertierung........................................................................ 2-10
2.2.2.3
Konvertierung von Dezimalzahlen in Dual-, Oktal- bzw. Hexadezimalzahlen.................................... 2-11
2.2.2.3.1
Die Dezimalzahl 27 soll im Dualsystem dargestellt werden. .......................................................... 2-11
2.2.2.3.2
Die Dezimalzahl 0,0033125 soll im Dualsystem dargestellt werden.............................................. 2-13
2.2.3
Zahlendarstellung im Computer .......................................................................................................2-14
2.2.3.1
2.2.3.2
Festpunktzahlen ....................................................................................................................................... 2-15
Gleitpunktzahlen im IEEE-Standard ...................................................................................................... 2-16
DV1_Kapitel_2.doc
Seite 2-1 von 18
Rüdiger Siol
12.09.2009 16:27
Hochschule
Ravensburg-Weingarten
Fakultät Technologie und Management Informationsverarbeitung
Vorlesung zur Datenverarbeitung 1
Zahlensysteme
2 Zahlensyteme
2.1 Zahl
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
Ordnungszahl
Kardinalzahl
Ganzrationale Zahl
Imaginäre Zahl
Irrationale Zahl
Natürliche Zahl
Negative Zahl
Positive Zahl
Rationale Zahl
Reelle Zahl
Komplexe Zahl
Gebrochene Zahl
Algebraische Zahl
Transzendente Zahl
Liouvillsche Zahl
Zahlen
•
•
•
•
Natürliche Zahlen
Ganze Zahlen
Rationale Zahlen
Reelle Zahlen€
€
– Alle rationalen und
€
irrationalen Zahlen
sowie auch die
transzendenten
Zahlen
€
• Komplexe Zahlen
(r.siol) 07.03.2007
DV1_Kapitel_2.doc
N = {0,1,2,…}
Z = {…,−3,−2,−1,0,1,2,3,…}
p
Q = { | p,q ∈ Z ^q ≠ 0}
q
Algebraische _ Irrationalität = 3 10 = 2.154…
Transzendente _ Zahl = π = 3.141592…
Transzendente _ Zahl = e = 2.718281…
C = {z|z = a + jb mit a,b € R, j2 = -1}
Hochschule Ravensburg-Weingarten
Technik | Wirtschaft | Sozialwesen
Seite 2-2 von 18
2
Rüdiger Siol
12.09.2009 16:27
Hochschule
Ravensburg-Weingarten
Fakultät Technologie und Management Informationsverarbeitung
Vorlesung zur Datenverarbeitung 1
Zahlensysteme
2.2 Zahlendarstellung
Für das numerische Rechnen mit reellen Zahlen verwendet man Darstellungen der nicht
negativen reellen Zahlen als Summe von natürlichzahligen Vielfachen zν ganzzahliger
Potenzen einer vorgegebenen Basis b, wobei b eine natürliche Zahl >1 ist und die Ziffern zν
nur die Werte 0, 1, …, b-1 annehmen können.
Man schreibt abkürzend für eine Zahl Z:
€
€
Z = zν bν + zν −1bν −1 + … + z1b1 + z0b 0 + z−1b−1 + … + z− µ b− µ + …
Z = zν zν −1 …z1z0 ,z−1 …z− µ …
Das Bildungsgesetz lautet:
n
€
Z=
∑z b
ν
ν
(m > 0,n ≥ 0;m,n ∈ N )
ν =−m
Die Ziffern mit ν ≥ 0 bilden den ganzen, die mit ν < 0 den gebrochenen Teil der Zahl.
€
€ Ein Beispiel hierzu:
€
€
Die Dezimaldarstellung, d.h. b = 10, für die Dezimalzahl (Man sagt auch
Gleitpunktzahl bzw. floating point number; spricht im Deutschen1 aber auch von
Gleitkommazahlen) 139.8125 lautet:
139.8125 = 1*10 2 + 3*101 + 9 *10 0 + 8 *10−1 + 1*10−2 + 2 *10−3 + 5 *10−4
Die Zahl gliedert sich in einen ganzen und einen gebrochenen Teil.
€
Eine Zahl wird also einfach dargestellt durch eine Folge von Ziffern. Die Stellung des
Kommas (Punktes) gibt Auskunft über die Potenz von b, mit der jede der Ziffern zu
multiplizieren ist.
Eine reelle Zahl in Verbindung mit ihrer Darstellung zur Basis 10 heißt Dezimalzahl;
analoge Begriffsbildungen lassen sich bei den übrigen Darstellungen vornehmen.
1
In kaufmännischen Bereichen aber auch in vielen anderen, so z.B. auch bei der Verwendung von
Tabellenkalkulationsprogrammen wie Excel, wird der Punkt verwendet, um tausender Bereiche vor und nach
dem Komma gegeneinander abzugrenzen und die Zahl so übersichtlicher zu machen.
In Programmiersprachen wie z.B.: C und C++ trennt der Punkt die Vor- und Nachkommastellen bei den
zugehörigen Datentypen wie float, double oder auch long double.
DV1_Kapitel_2.doc
Seite 2-3 von 18
Rüdiger Siol
12.09.2009 16:27
Hochschule
Ravensburg-Weingarten
Fakultät Technologie und Management Informationsverarbeitung
Vorlesung zur Datenverarbeitung 1
Zahlensysteme
Darstellungen zur Basis:
2
3
4
5
8
10
12
16
=
=
=
=
=
=
=
=
Dual- oder Binärsystem
Ternärsystem
Quaternärsystem
Quinärsystem
Oktalsystem
Dezimalsystem
Duodezimalsystem
Sedezimal-, Hexadezimalsystem
Bei Zahlendarstellungen zur Basis b wird das arithmetische Komplement der gegebenen
Zahl zu einer vorbestimmten Potenz der Basis b als b-Komplement bezeichnet (z.B.
Zehnerkomplement im Dezimalsystem). Das (b – 1) Komplement ist die Zahl, die man erhält,
wenn man jede Ziffer der gegebenen Zahl von b – 1 subtrahiert (z.B. Neunerkomplement im
Dezimalsystem).
DV1_Kapitel_2.doc
Seite 2-4 von 18
Rüdiger Siol
12.09.2009 16:27
Hochschule
Ravensburg-Weingarten
Fakultät Technologie und Management Informationsverarbeitung
Vorlesung zur Datenverarbeitung 1
Zahlensysteme
Zahlensysteme für die EDV2
Im Zusammenhang mit der Nutzung von Computern sind folgende Zahlensysteme
gebräuchlich:
2.2.1
Zahlensystem
Basis zulässige Ziffern
Dualsystem
2 0, 1
Oktalsystem
8 0, 1, 2, 3, 4, 5, 6, 7
Hexadezimalsystem
16 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
(Sedezimalsystem)
(Die Buchstaben A…F stehen für die Werte 10…15 und können
auch als Kleinbuchstaben dargestellt werden
Dezimalsyastem
10 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Dual- Oktal- Dezimal0
1
10
11
100
101
110
111
1000
1001
1010
1011
1100
1101
1110
1111
10000
10001
10010
…
0
01
02
03
04
05
06
07
010
011
012
013
014
015
016
017
020
021
022
…
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
…
Hexa
Hexa
dezimal- dezimal0
0
0X 1
0x 1
0X 2
0x 2
0X 3
0x 3
0X 4
0x 4
0X 5
0x 5
0X 6
0x 6
0X 7
0x 7
0X 8
0x 8
0X 9
0x 9
0X A
0x a
0X B
0x b
0X C
0x c
0X D
0x d
0X E
0x e
0X F
0x f
0X10
0x10
0X11
0x11
0X12
0x12
…
…
Sofern die Zahlen von 0 verschieden sind schreibt man:
Dezimalzahlen beginnend mit einer von 0 verschiedenen Ziffer
Oktalzahlen immer mit einer führenden 0
Hexadezimalzahlen immer mit 0x bzw. 0X am Anfang
Weitere Schreibweisen sind:
2
213.64 ( 8)
(213.64 ) 8
EDV – Elektronische Daten Verbeitung
DV1_Kapitel_2.doc
€
Seite 2-5 von 18
Rüdiger Siol
12.09.2009 16:27
Hochschule
Ravensburg-Weingarten
2.2.2
Fakultät Technologie und Management Informationsverarbeitung
Vorlesung zur Datenverarbeitung 1
Zahlensysteme
Umwandlung (Konvertierung)
Die Umrechnung von einem Zahlensystem in ein anderes nennt man Konvertierung.
Werden mehrere Zahlensysteme gleichzeitig benutzt, so ist es üblich, die Basis als Index
anzuhängen.
Z.B.: für die Dezimalzahl 139.8125 ergibt sich dann:
139.812510 = 10001011.11012 = 213.648 = 8B.D16
Man kann von jedem System direkt in jedes andere Konvertieren. Die dicken Pfeile
zeigen den jeweils bequemsten Weg; die anderen Varianten sind umständlicher oder
zeitaufwendiger.
Dezimalsystem
Oktalsystem
Hexadezimalsystem
Dualsystem
DV1_Kapitel_2.doc
Seite 2-6 von 18
Rüdiger Siol
12.09.2009 16:27
Hochschule
Ravensburg-Weingarten
Fakultät Technologie und Management Informationsverarbeitung
Vorlesung zur Datenverarbeitung 1
Zahlensysteme
2.2.2.1 Konvertierung von Dualzahlen in Oktal- bzw. Hexadezimalzahlen
Die Konvertierung von Dualzahlen in Oktal- bzw. Hexadezimalzahlen ist einfach
dadurch möglich, dass man vom Punkt ausgehend nach links und rechts Gruppen von drei (für
Oktalzahlen) bzw. vier (für Hexadezimalzahlen) Bits bildet und den Wert derselben bestimmt.
Diese Ziffern sind dann die Ziffern des Oktal- bzw. Hexadezimalsystems.
Umgekehrt ersetzt man einfach die Ziffern des Oktal- bzw. Hexadezimalsystems durch
die zugehörige Dualzahl. Da 8 und 16 je ganzzahlige 2-er Potenzen sind, passt das dann.
Beispiel:
Gegeben sei 11001110101001012 als einfache ganze Zahl, den Punkt muss man sich
also ganz rechts denken. Damit liest man die Oktalzahl unmittelbar ab, denn man sieht, die
Gruppierung 1 100 111 010 100 1012 also ist die Oktalzahl 1472458; entsprechend für die
Hexadezimalzahl erst die Gruppierung: 1100 1110 1010 01012; also ist das die Zahl CEA516
in hexadezimaler Darstellung. Dabei dürfen die Buchstaben aber auch klein geschrieben
werden, also cea516.
In Programmiersprachen wie C und C++ ist festgelegt, dass Dezimalzahlen
grundsätzlich mit der ersten von 0 verschiedenen Ziffer beginnen, bei Oktalzahlen wird
immer eine 0 vorangestellt (0147245) und bei Hexadezimalzahlen die Zeichenfolge 0x oder
0X (0XCEA5 oder 0xcea5 oder auch gemischte Groß- und Kleinschreibung – das sieht aber
nach Schlamperei aus obwohl es zulässig ist).
DV1_Kapitel_2.doc
Seite 2-7 von 18
Rüdiger Siol
12.09.2009 16:27
Hochschule
Ravensburg-Weingarten
Fakultät Technologie und Management Informationsverarbeitung
Vorlesung zur Datenverarbeitung 1
Zahlensysteme
2.2.2.2 Konvertierung von Dual-, Oktal- bzw. Hexadezimal- in Dezimalzahlen
Der Algorithmus für die Umwandlung eines Wertes aus dem Dual-, Oktal- bzw.
Hexadezimalsystem in das Dezimalsystem lautet, wobei der Dezimalpunkt nach z0 einzufügen
ist.
n
a=
∑z B
i
i
(m > 0,n ≥ 0;m,n ∈ N )
i= −m
Die Auflösung erfolgt dabei zweckmäßig mit dem Horner-Schema; das nachfolgend
im Zusammenhang mit ganzen rationalen Funktionen erklärt und in Beispielen gezeigt wird.
€
€
2.2.2.2.1 Ganze rationale Funktionen
Eine Funktion der Form
y = f ( x ) = an x n + an−1 x n−1 + … + a1 x + a0
oder kurz
€
n
y = ∑ ai x i
i= 0
worin ai irgendwelche reelle Zahlen sind und n nichtnegativ ganz ist, heißt eine ganze
rationale Funktion oder auch ein Polynom (in x). Die ai werden Koeffizienten des Polynoms
€ genannt.
Ein Polynom heißt n-ten Grades oder von n-ter Ordnung, wenn der größte auftretende
Exponent von x gleich n ist; in der oben angegebenen Form also genau dann, wenn an ≠ 0 ist.
Sollen die Werte eines Polynoms für verschiedene x berechnet werden, so müssen in der
angegebenen Form n Potenzwerte ermittelt und mit den Koeffizienten ai multipliziert werden.
Außerdem sind dann noch alle aixi zu addieren. Das gibt zuweilen recht langwierige
Rechnungen.
DV1_Kapitel_2.doc
Seite 2-8 von 18
Rüdiger Siol
12.09.2009 16:27
Hochschule
Ravensburg-Weingarten
Fakultät Technologie und Management Informationsverarbeitung
Vorlesung zur Datenverarbeitung 1
Zahlensysteme
Meist ist es einfacher ein Polynom in der Form
y = (((…(an x + an−1 )x + an−2 )x + an−3 )x + … + a1 )x + a0
aufzuschreiben und entsprechend zu berechnen.
€
Diese Gleichung ist die formelmäßige Darstellung des Hornerschen Schemas.
Praktisch kann also der Wert eines Polynoms f(x) vom Grad n für einen beliebigen Wert von
x durch das folgende Schema bestimmt werden:
an
an-1
an-2
an-3 … a2
a1
a0
x
x* a’n x* a’n-1 x* a’n-2 … x* a’3 x* a’2 x* a’1
a’n a’n-1 a’n-2
a’n-3 … a’2
a’1
a’0
In der ersten Zeile stehen die gegebenen n+1 Koeffizienten ai des Polynoms, und zwar
auch die, die gleich Null sind! Ist außerdem x gegeben, so erhält man die im Schema
auftretenden Größen a’i rekursiv nach den Formeln
a’n
a’i
=
=
an
ai + x*a’i+1
∀i ∈ ((n −1)…0)
Es wird immer zuerst die erste Zeile hingeschrieben und dann von links nach rechts
fortschreitend spaltenweise weitergerechnet. Der gesuchte Polynomwert ist:
€
f(x) = a’0
Beispiel:
Gegeben sei das Polynom 4-ten Grades:
y = −5x 4 + 25x 2 − 7x + 3
Man berechne den Funktionswert an der Stelle x = -2
€
x=-2
-5 0 25 -7 3
10 -20 -10 34
-5 10 5 -17 37
Der gesuchte Polynomwert ist also:
f(-2) = 37
Dieses Vefahren bezeichnet man als Hornersches3 Schema.
3
Ein von Horner (Horner, William Georg 1786 – 1837) und schon vorher von Ruffini (Ruffini, Paolo 1765 –
1822) gegebenes Schema zur Berechnung der Funktionswerte.
DV1_Kapitel_2.doc
Seite 2-9 von 18
Rüdiger Siol
12.09.2009 16:27
Hochschule
Ravensburg-Weingarten
Fakultät Technologie und Management Informationsverarbeitung
Vorlesung zur Datenverarbeitung 1
Zahlensysteme
2.2.2.2.2 Anwendung des Hornerschemas zur Konvertierung
Wir haben gesehen, dass jede Zahl eines beliebigen Zahlensystems sich als Polynom
darstellen lässt in der Form:
n
a=
∑z B
i
i
i= −m
n
€
Wenn wir da mit der eben besprochenen Funktion y = ∑ ai x i vergleichen sieht man
i= 0
unmittelbar, dass sich B und x entsprechen. Nur vereinfacht sich alles, da B nur die Werte
entsprechend der Basis der Zahlensysteme haben kann und für die ganzzahligen Koeffizienten
gilt 0 ≤ zi < B. Man muss sich nur noch daran gewöhnen, dass die Anwendung des
€
Hornerschemas zur Konvertierung z.B. von Dualzahlen
ins Dezimalsystem furchtbar einfach
wird.
Beispiel:
Die Dualzahl 100111002 soll in eine Dezimalzahl umgewandelt werden.
1
0
0
1
1
1
0
B=2
2*1 2*2 2*4 2*9 2*19 2*39
1 2
4
9 19 39
78
0
2*78
156
Wenn wir nun z.B. die Regel zur Konvertierung von Dualzahlen in Oktal- bzw.
Hexadezimalzahlen anwenden, so sieht man, dass die Dualzahl 100111002 der Oktalzahl 2348
entspricht und wir können unser Hornerschema erneut anwenden:
2
3
B=8
8*2
2 19
4
8*19
156
Das ging jetzt deutlich schneller und führt (natürlich) zum selben Ergebnis. Machen
wir das ganze jetzt noch für die entsprechende Hexadezimalzahl, denn es entspricht der
Dualzahl 100111002 die Hexadezimalzahl 9C16.
9
B=16
C
16*9
9 156
Das ging jetzt noch schneller, ist aber unpraktisch weil wir es nicht gewohnt sind, im
Hexadezimalsystem zu rechnen.
DV1_Kapitel_2.doc
Seite 2-10 von 18
Rüdiger Siol
12.09.2009 16:27
Hochschule
Ravensburg-Weingarten
Fakultät Technologie und Management Informationsverarbeitung
Vorlesung zur Datenverarbeitung 1
Zahlensysteme
2.2.2.3 Konvertierung von Dezimalzahlen in Dual-, Oktal- bzw. Hexadezimalzahlen
Für die Konvertierung vom Dezimal- in eines der anderen Systeme gelten für den
ganzen und den gebrochenen Teil der Dezimalzahl folgende Algorithmen4:
a.) Ganzer Teil:
Ist G die ganze Zahl im Dezimalsystem, dann gilt für das Zahlensystem mit der Basis B das
Bildungsgesetz:
n
G = ∑ zi B i
∀(n ≥ 0)
i= 0
Dividiert man G durch B, so erhält man einen ganzzahligen Teil (die Summe) und einen Rest:
€
n
€
G
z
= ∑ zi B i−1 + 0
B i=1
B
Dabei nimmt z0 die Werte 0,1,…,B-1 an und ist die niederwertige Ziffer des Zahlensystems.
Wendet man das Verfahren jetzt auf die abgespaltete Summe wiederholt an, so ergeben sich
die weiteren Ziffern.
€
b.) Gebrochener Teil:
Ist g ein echter Dezimalbruch, so lautet die Vorschrift in die Konvertierung in das
Zahlensystem mit der Basis B jetzt:
m
g * B = z−1 + ∑ z−i B−i+1
i= 2
Die wiederholte Anwendung auf die entstehenden Summen liefert die Werte
€
z−1,z−2 ,…
2.2.2.3.1 Die Dezimalzahl 27 soll im Dualsystem5 dargestellt werden.
€
Dividend
27
13
6
3
1
:
:
:
:
:
Divisor
2
2
2
2
2
=
=
=
=
=
Quotient Rest
13
1
6
1
3
0
1
1
0
1
Wertigkeit
0
1
2
3
4
4
In der Datenverarbeitung und Informatik ist ein Algorithmus allgemein eine in einer geeigneten formalisierten
Sprache angegebene Folge von exakten Arbeitsanweisungen (Rechenanweisungen) an einen Computer, durch
die der Lösungsweg eines mathematischen Problems in endlich vielen ausführbaren elementaren
Verarbeitungsschritten eindeutig beschrieben wird. Für derartige algorithmische Programmierungen von
Rechenprozessen geeignete formalisierte Sprachen sind ALGOL, FORTRAN, PASCAL, C, C++ u.a.
5
Die Begriffe Dualsystem, Binärsystem, dyadisches System sind Synonym.
DV1_Kapitel_2.doc
Seite 2-11 von 18
Rüdiger Siol
12.09.2009 16:27
Hochschule
Ravensburg-Weingarten
Fakultät Technologie und Management Informationsverarbeitung
Vorlesung zur Datenverarbeitung 1
Zahlensysteme
Es ist also:
27(10) = 2 *101 + 7 *10 0 = 1* 2 4 + 1* 2 3 + 0 * 2 2 + 1* 21 + 1* 2 0 = 11011( 2)
Gegeben war also eine Zahl im Dezimalsystem und ermittelt wurden die Ziffern im
Dualsystem. Der Algorithmus ist auf jedes Zahlensystem anwendbar; dann muss er auch auf
€ das Dezimalsystem anwendbar sein und wir erhalten:
Dividend Divisor
Quotient Rest
27
:
10
=
2
7
2
:
10
=
0
2
Wertigkeit
0
1
Es ist also:
27(10) = 2 *101 + 7 *10 0
ein Ergebnis das natürlich trivial erscheint weil wir die Ziffern in diesem dezimalen
Stellenwertsystem sehen und wissen, dass es nun mal so definiert ist. Ein Programm in einer
€ Rechenanlage „sieht“ das allerdings nicht; der Algorithmus wäre also immer anzuwenden,
auch wenn er uns trivial erscheint.
DV1_Kapitel_2.doc
Seite 2-12 von 18
Rüdiger Siol
12.09.2009 16:27
Hochschule
Ravensburg-Weingarten
Fakultät Technologie und Management Informationsverarbeitung
Vorlesung zur Datenverarbeitung 1
Zahlensysteme
2.2.2.3.2 Die Dezimalzahl 0,0033125 soll im Dualsystem dargestellt werden
0,0033125
0,006625
0,01325
0,0265
0,053
0,106
0,212
0,424
0,848
0,696
0,392
0,784
*
*
*
*
*
*
*
*
*
*
*
*
2
2
2
2
2
2
2
2
2
2
2
2
=
=
=
=
=
=
=
=
=
=
=
=
0,006625
0,01325
0,0265
0,053
0,106
0,212
0,424
0,848
1,696
1,392
0,784
1,568
0
0
0
0
0
0
0
0
1
1
0
1
Wertigkeit
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-11
-12
0,0033125
0,0265
0,212
0,696
0,568
0,544
0,352
0,816
0,528
0,224
0,792
0,336
*
*
*
*
*
*
*
*
*
*
*
*
8
8
8
8
8
8
8
8
8
8
8
8
=
=
=
=
=
=
=
=
=
=
=
=
0,0265
0,212
1,696
5,568
4,544
4,352
2,816
6,528
4,224
1,792
6,336
2,688
0
0
1
5
4
4
2
6
4
1
6
2
Wertigkeit
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-11
-12
Im Dualsystem gilt: 0,0033125(10) = 0,000000001101(2) wobei ein Fehler <= 2-12 auftritt
wegen der begrenzten Stellenzahl.
Im Oktalsystem gilt: 0,0033125(10) = 0,001544264162(8) wobei ein Fehler <= 8-12
auftritt wegen der begrenzten Stellenzahl.
Man beachte, dass man nach dem gleichen Verfahren auch die Ziffern im
Dezimalsystem ermitteln könnte; nur erscheint das natürlich überflüssig, da man diese ja
sowieso sieht; in einem Programm ist der Algorithmus erforderlich da es die Ziffern eben
nicht „sieht“.
DV1_Kapitel_2.doc
Seite 2-13 von 18
Rüdiger Siol
12.09.2009 16:27
Hochschule
Ravensburg-Weingarten
Fakultät Technologie und Management Informationsverarbeitung
Vorlesung zur Datenverarbeitung 1
Zahlensysteme
Zahlendarstellung im Computer6
Dies beschränkt sich auf die ZahlendarsteIlung in Digitalrechnern. Das
Speichermedium eines Computers ist in Speicherplätze oder Speicherwörter eingeteilt, von
denen jedes mit einer Adresse versehen ist. Jedes Speicherwort ist selbst wieder in sogenannte
Bits (binary digits) unterteilt und jedes Bit kann genau zwei Zustände annehmen. Die Anzahl
der Bits pro Wort heißt Wortlänge. Die Wortlänge schwankt von Computer zu Computer
zwischen 8 und 96 Bit. Zur Speicherung von Zahlen (und auch Instruktionen, Texten) stehen
die Speicherwörter zur Verfügung. Da jedes Bit eines Wortes genau zwei Zustände annehmen
kann, ist die unmittelbare Beziehung zum Dualsystem mit seinen zwei Ziffern evident. Es
wird jede der beiden Dualziffern 0,1 durch einen der beiden möglichen Zustände eines Bits
repräsentiert.
Bei der Zahldarstellung im Speicher des Computers hat man zwei Methoden zu
unterscheiden:
2.2.3
Festkommadarstellung (Festpunktdarstellung) und
Gleitkommadarstellung (Gleitpunktdarstellung).
Bei beiden wollen wir annehmen, dass die Wortlänge des Computers gleich n ist. In
vielen Computern ist es dann auch möglich, mehrere Wörter zusammenzufassen zu einem
neuen "Wort", wodurch die Anzahl der darstellbaren Zahlen erhöht werden kann (zweifache,
dreifache Wortlänge). Dabei entstehen aber keine prinzipiellen Unterschiede.
Der Zahlenbereich eines Rechenautomaten ist die Menge aller Zahlen zwischen einer
endlichen oberen und einer endlichen unteren Grenze, die ein (Zahl-)Register eines
Rechenautomaten aufnehmen kann. Auf ein Überschreiten dieses Bereichs, einen sogenannten
Überlauf, reagiert der Rechenautomat in angemessener Weise. Ein Skalenfaktor ist ein Faktor
mit dem eine reelle Zahl zu multiplizieren ist, damit sie in einen vorgeschriebenen
Zahlenbereich fällt.
Bei der Festkommadarstellung ist neben der Wortlänge schon von der Rechenanlage
her auch die Stellung des "Dualpunktes" (in der Dualdarstellung entsprechend dem
Dezimalpunkt) fixiert7. Von der Wortlänge n entfällt so 1 Bit auf das Vorzeichen der Zahl, n1
Bits stehen für die Stellen vor dem Komma der Dualzahl und n2 Bits für die Stellen nach dem
Komma der Dualzahl zur Verfügung, wobei n1 + n2 = n - 1 ist und jedes Bit eine der
Dualziffern der darzustellenden Zahl aufnimmt.
n-1
,
Vorzeichen
n1
n2
6
Willibald Dörfler, Werner Peschek; Einführung in die Mathematik für Informatiker; Carl Hanser Verlag
München Wien (1988); ISBN 3-446-15112-5
7
Das gilt dann immer; würde man zulassen, dass das Komma (der Punkt) immer an anderer Stelle steht ergäbe
sich eine sehr komplizierte und aufwendige Logik.
DV1_Kapitel_2.doc
Seite 2-14 von 18
Rüdiger Siol
12.09.2009 16:27
Hochschule
Ravensburg-Weingarten
Fakultät Technologie und Management Informationsverarbeitung
Vorlesung zur Datenverarbeitung 1
Zahlensysteme
2.2.3.1 Festpunktzahlen
Der Wertebereich der positiven Festpunktzahlen mit den angegebenen Parametern
ergibt sich zu
0 ≤ a ≤ 2 n −1
Festpunktzahlen können in nachfolgender Form dargestellt werden:
€
Dualzahl (n-1 Bits)
Vorzeichen v der Festpunktzahl
Zur Darstellung ganzer Zahlen wird die Festkommadarstellung mit n2 = 0 verwendet,
im kaufmännischen Bereich wird eine solche mit n2 = 2 verwendet. Beschränkt man die
Festkommadarstellung auf ganze Zahlen, so kann man alle ganzen Zahlen von −2 n−1 bis
(2n−1 −1) exakt darstellen; größere oder kleinere Zahlen sind nicht erfassbar, und sollte im
Laufe einer Rechnung eine solche auftreten, so wird dies (hoffentlich) von der Anlage an den
Benutzer gemeldet.
€
€
Eine andere Zahlendarstellung basiert darauf, dass man mittels 4 Bits sechzehn
verschiedene Zeichen binär (dual) verschlüsseln kann, also etwa die Zahlen 0 bis 15. Diese
kann man aber als die Ziffern des Hexadezimalsystems (Basis 16) ansehen, wobei für
10,11,12,13,14,15 die Symbole A, B, C, D, E, F geschrieben werden. Eine Zahl im System
mit Basis 16 lässt sich dann durch eine entsprechende Folge von 4-BitGruppen im Speicher
repräsentieren. Welcher Zahlenbereich insgesamt darstellbar ist, hängt wieder von der
Wortlänge ab, wobei diese üblicherweise ein Vielfaches von 8 ist. Ist z.B. die Wortlänge 32,
so hat man 8 4-Bit-Gruppen zur Verfügung. Reserviert man das 1-te Bit der ersten Gruppe für
das Vorzeichen, so ist die größte darstellbare Zahl 7 F F F F F F F16. Natürlich kann man mit
dieser Methode nicht mehr Zahlen darstellen als bei direkter binärer Speicherung.
DV1_Kapitel_2.doc
Seite 2-15 von 18
Rüdiger Siol
12.09.2009 16:27
Hochschule
Ravensburg-Weingarten
Fakultät Technologie und Management Informationsverarbeitung
Vorlesung zur Datenverarbeitung 1
Zahlensysteme
2.2.3.2 Gleitpunktzahlen im IEEE-Standard
Die heute übliche Form der Gleitpunktdarstellung entspricht dem 1985
verabschiedeten IEEE-Standard8. Diese befasst sich mit der Normung der Rechnerarithmetik
und enthält Festlegungen zu den Formaten, dem Rundungsverhalten, den arithmetischen
Operatoren, der Konvertierung von Zahlenwerten, zu Vergleichsoperatoren und zur
Behandlung von Ausnahmefällen wie Bereichsüberschreitungen. Dort wird für die
Gleitpunktzahl folgende Form festgelegt:
1
Charakteristik C = E + K
11
Mantisse M
52
…
…
Vorzeichen v der Gleitpunktzahl (d.h. Vorzeichen der Mantisse)
Die Charakteristik C wird aus dem Exponenten E durch Addition einer geeigneten
Konstanten K gebildet. Diese wird so gewählt, dass für die Charakteristik nur positive Werte
auftreten. Die darstellbare Zahl lautet:
v
a = (−1) * 2 E *1.b1b2 …bt−1
mit E = C – K
Dabei gilt: Cmin = 1, Cmax = 254; C = 0 und C = 255 sind reserviert; d.h. K = 128.
€
Der Standard gibt zwei Basisformate vor (einfach- und doppelt-genaue
Gleitpunktzahlen), lässt aber auch erweiterte Formate zu.
Im Gegensatz zur Darstellung ganzer Zahlen verwendet man zur Darstellung von
reellen Zahlen meistens die Gleitkommadarstellung . Wir gehen wieder von einer festen
Wortlänge n aus und bemerken zu allererst, dass im Computer nur endlich viele Zahlen exakt
darstellbar sind (sie werden Maschinenzahlen genannt). Für alle anderen (überhaupt
darstellbaren) Zahlen, insbesondere für alle Zahlen mit unendlichen Dezimal- (Dual- )
Brüchen kommt daher nur eine näherungsweise Darstellung in Frage. Die
Gleitkommadarstellung beruht auf der Tatsache, dass sich jede reelle Zahl a in der Form
a = b *10 e
oder
a = c *2f
mit
b <1
c <1
e,f ganze Zahlen
darstellen lässt. Diese Darstellung heißt auch die halblogarithmische Darstellung von a; b
€ bzw. c heißen die Mantisse
€
und e bzw. f der Exponent der Darstellung.
€
8
IEEE – Institute of Electrical and Electronics Engineers.
DV1_Kapitel_2.doc
Seite 2-16 von 18
Rüdiger Siol
12.09.2009 16:27
Hochschule
Ravensburg-Weingarten
Fakultät Technologie und Management Informationsverarbeitung
Vorlesung zur Datenverarbeitung 1
Zahlensysteme
Beispiel
Wir schreiben nebeneinander die übliche Form (Dezimaldarstellung) und die
halblogarithmische Form für einige Zahlen:
3,5261
−890012,35
0,0001925
0,35261*101
−0,89001235 *10 6
0,1925 *10−3
Im Beispiel haben wir bereits die sogenannte Normalisierung der Mantisse
vorweggenommen: Man vereinbart, dass in der Mantisse stets die erste Stelle nach dem
€
€ sein muss. Dadurch wird die halblogarithmische Darstellung
Komma von Null verschieden
einer reellen Zahl eindeutig und diese Normalform ist auch platzsparend, da die führenden
Nullen kürzer im Exponenten angegeben werden. Die Darstellung einer Zahl im Computer
erfolgt nun prinzipiell so, dass eine bestimmte Anzahl der n Bits eines Wortes zur Darstellung
der (normalisierten) Mantisse, ein Bit für das Vorzeichen und die restlichen Bits für den
Exponenten der halblogarithmischen Darstellung zur Verfügung stehen. Da das Dualsystem
verwendet wird, hat man die darzustellende reelle Zahl a in die Form a = c * 2 f zu bringen.
Dies geschieht am einfachsten dadurch, dass man a (in Dezimalform) solange durch 2
dividiert oder mit 2 multipliziert, bis man eine Zahl d erhält mit 1/2 <= d < 1. Die Anzahl der
nötigen Divisionen ist der positive Exponent, die Anzahl der Multiplikationen der negative
€
Exponent. Ist dieser Exponent f, so ist dann a = d * 2f.
Beispiel
Es sei a = 14,618; man dividiert fortlaufend durch 2 und erhält:
7,309;
3,6545;
1,82725;
0,913625 = d; f = 4.
Also ist 14,618 = 0,913625 * 24.
Nun werden die normalisierte Mantisse d und der Exponent f getrennt in Dualzahlen
verwandelt, wobei die Mantisse in Dualdarstellung wegen d >= 1/2 wieder normalisiert ist.
Die so erhaltenen Dualzahlen für Mantisse und Exponent werden auf den entsprechenden Bits
des Wortes gespeichert.
Da für die Mantisse nur endlich viele Bits zur Verfügung stehen, entsteht bei der
Darstellung jeder Zahl, deren Mantisse d mehr Stellen als verfügbare Bits hat (insbesondere
also jede irrationale Zahl), notwendigerweise ein Fehler. Ist m die Anzahl der DualsteIlen
(Bits) für die Mantisse, so ist der Fehler kleiner als 2-(m-1). Natürlich ist auch der Exponent
durch die Anzahl der dafür reservierten Bits beschränkt. Statt des Exponenten wird meistens
die sogenannte Charakteristik verwendet, die die Speicherung des Vorzeichens des
Exponenten vermeidet. Die Charakteristik entsteht aus dem Exponenten f durch Addition
einer (maschinenabhängigen) festen Zahl f0, so dass f + f0 >= 0 ist. Stehen etwa zur
Speicherung des Exponenten 7 Bits zur Verfügung, so wählt man f0 = 64, denn der kleinste
darstellbare Exponent ist -64 = - 26. Durch die Anzahl der Bits für die Charakteristik wird
offensichtlich die größte bzw. kleinste in der Maschine darstellbare Zahl festgelegt.
Demgegenüber legt die verfügbare Länge der Mantisse die Genauigkeit der ZahlendarsteIlung
fest.
DV1_Kapitel_2.doc
Seite 2-17 von 18
Rüdiger Siol
12.09.2009 16:27
Hochschule
Ravensburg-Weingarten
Fakultät Technologie und Management Informationsverarbeitung
Vorlesung zur Datenverarbeitung 1
Zahlensysteme
Abschließend sollen noch einige Bemerkungen auf die Problematik der
Rechenoperationen mit Zahlen in Gleitkommadarstellung hinweisen. Zunächst ist schon
durch die Darstellung ein Fehler bedingt, der sich bei der weiteren Verarbeitung im
allgemeinen vergrößern wird. Zusätzliche Fehler entstehen direkt durch die
Rechenoperationen. Bei der Addition wird häufig im Resultat eine Linksverschiebung des
Dualpunktes und dadurch eventuell der Verlust einer oder mehrerer Stellen am Ende der
Mantisse notwendig sein. Auch kann sowohl bei Addition als auch Multiplikation Überlauf
eintreten dadurch, dass der Exponent zu groß wird. Die Multiplikation zweier n-stelliger
Mantissen ergibt entweder 2n oder 2n – 1 Stellen, so dass auch hier "abgeschnitten" werden
muss , was erneut einen Genauigkeitsverlust bedingt. In vielen Anlagen werden diese Fehler
durch Einrichtungen zum Runden der Zahlen etwas verkleinert. Besonders fehlerhaft kann
sich die Subtraktion zweier beinahe gleich großer Zahlen auswirken.
Ist etwa a1 = 0,32183 * 10-4 und a2 = 0,32151 * 10-4,
so ist a1 – a2 = 0,00032 * 10-4.
Dieses Resultat wird aber mit normalisierter Mantisse als 0.32000 *10−7 gespeichert. War also
früher die 4. oder 5. Stelle der Mantisse mit einem Fehler behaftet, so ist es jetzt die erste oder
zweite, was weit größere Auswirkungen im weiteren Verlauf der Rechnung haben kann.
Schließlich erwähnen wir, dass in der "Gleitkommaarithmetik" die üblichen Gesetze des
€
Rechnens mit reellen Zahlen wie Distributiv- oder Assoziativgesetz nicht erfüllt sind. Denn
Rundungen sind im allgemeinen von der Reihenfolge der durchgeführten Rechenoperationen
abhängig. Für die Gleitkommaarithmetik kann man genaue Fehlerabschätzungen durchführen.
DV1_Kapitel_2.doc
Seite 2-18 von 18
Rüdiger Siol
12.09.2009 16:27
Herunterladen