4 C-Anweisungen - informatik.uni-leipzig.de

Werbung
Universität Leipzig
Institut für Informatik
Dr. Monika Meiler
Datendarstellung im Rechner
Problem
Kreative Phase
90 %
Umsetzung
Algorithmus
Programmierung
(Codierung)
Automatisierte Phase
10 %
Programm in höhere
Programmiersprache
Übersetzung durch
spezielle Programme
(Compiler)
Programm in
Maschinensprache
Interpretation durch CPU
(Decodierung)
Ausführung des
Programms
Propädeutikum
Kapitel 5 Folie 1/7
Universität Leipzig
Institut für Informatik
Dr. Monika Meiler
Algorithmus
Programm
Codierung
Objekt
Daten
Decodierung

x y  z

  x     y    , mit  1    z
Beispiel aus terms_a.c
float a = 1e10, b = 1e10, c = 1e-10;
printf( "%f\n", a * ( a - b + c));
/* a*((a-b)+c)
=> 1 */
printf( "%f\n", a * ( a + c - b));
/* a*((a+c)-b)
=> 1 */
/* Rechner => 0 */
Beispiel aus terms_b.c
int x = 40, y; float a = 1e10;
y = a * x; printf( "%d\n", y);
/* y=1e10*40 => 4e11 */
/* Rechner => 2147483647 */
Propädeutikum
Kapitel 5 Folie 2/7
Universität Leipzig
Institut für Informatik
Dr. Monika Meiler
Darstellbare natürlichen Zahlen mit maximal 4 Bit (n = 4):
z3
Dezimalzahl
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Propädeutikum
z2
z1
Computerzahl
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
z0
Berechnung
0
2 1
21  2
21  20  3
...
...
...
2
1
0
2 2 2 7
23  8
...
...
...
...
...
...
3
2
1
0
2  2  2  2  15
0
Kapitel 5 Folie 3/7
Universität Leipzig
Institut für Informatik
Dr. Monika Meiler
Darstellbare ganzen Zahlen mit maximal 4 Bit (n = 4):
s
Dezimalzahl
7
6
5
4
3
2
1
0
-1
-2
-3
-4
-5
-6
-7
-8
z2
z1
z0
Computerzahl
0111
0110
0101
0100
0011
0010
0001
0000
1111
1110
1101
1100
1011
1010
1001
1000
Berechnung
2 2  21  20  7
2 2  21  6
...
...
...
...
0
2 1
0
4
2 1  16  1  15
24  2  16  2  14
...
...
...
...
4
2  7  16  7  9
2 4  8  16  8  8
 8,7  0,15:

 

Allgemein:  2 n ,2 n  1  0,2 n1  1
Propädeutikum
Kapitel 5 Folie 4/7
Universität Leipzig
Institut für Informatik
Dr. Monika Meiler
Darstellbare positive rationale Zahlen der Menge Mz( 3, -1, 1):
Maschinenzahl Wert
(0.00)2 * 2 0
(1.00)2 * 2-1
(1.01)2 * 2-1
(1.10)2 * 2-1
(1.11)2 * 2-1
(1.00)2 * 20
(1.01)2 * 20
(1.10)2 * 20
(1.11)2 * 20
(1.00)2 * 21
(1.01)2 * 21
(1.10)2 * 21
(1.11)2 * 21
B
B
P
B
B
P
P
B
B
P
P
B
B
P
P
B
B
P
P
B
B
P
P
B
B
P
P
B
B
P
P
B
B
P
P
B
B
P
P
B
B
P
P
B
B
P
P
B
B
P
P
P
=0
= 4/8
= 5/8
= 6/8
= 7/8
= 8/8
= 10/8
= 12/8
= 14/8
= 16/8
= 20/8
= 24/8
= 28/8
interne
Darstellung
0 | 00 | 00
0 | 01 | 00
0 | 01 | 01
0 | 01 | 10
0 | 01 | 11
0 | 10 | 00
0 | 10 | 01
0 | 10 | 10
0 | 10 | 11
0 | 11 | 00
0 | 11 | 01
0 | 11 | 10
0 | 11 | 11
0
MIN
⇒z'
MAX
z' z
MIN
0
Propädeutikum
4 5 6 7 8 10 12 14 16
MAX
20
24
28
/8
Kapitel 5 Folie 5/7
Universität Leipzig
Institut für Informatik
Dr. Monika Meiler
Allgemein (mit negativen Zahlenbereich):
 MAX ,MIN   0 MAX , MIN 
Wertebereich für Gleitkommatypen:
-MAX
-MIN
MIN
MAX
0
neg. Überlauf
neg. pos.
Unterlauf
pos. Überlauf
Behandlung nicht darstellbarer Zahlen:
1.
2.
3.
z > MAX oder z < -MAX:
Überlauf ( Infinity, -Infinity)
⇒
-MIN < z < 0 oder 0 < z < MIN:
Unterlauf
⇒
-MAX < z < -MIN oder MIN < z < MAX:
Maschinenzahlbereich
⇒
Propädeutikum
Abbruch:
Sonderbehandlung, Runden auf darstellbare Zahlen:
Runden auf darstellbare Zahlen:
Laufzeitfehler
Rundungsfehler
Rundungsfehler
Kapitel 5 Folie 6/7
Universität Leipzig
Institut für Informatik
Dr. Monika Meiler
Standard für rationalen Zahlenbereiche:
(IEEE – Standard1, Institute of Electrical and Electronics Engineers)
TP
PT
32 – Bit – Format ( 4 Byte) für einfach genaue Zahlen oder auch „single“
64 – Bit – Format ( 8 Byte) für doppelt genaue Zahlen oder auch „double“
80 – Bit – Format ( 10 Byte) für erweitert genaue Zahlen oder auch „double-extended“
Bezeichnung
single
double
Byteanzahl
s [Bit]
4
8
M [Bit]
1
1
24
53
s Vorzeichenbit: 0 ... +, 1 ... M Länge der Mantisse, einschließlich hidden bit
E Anzahl der Exponentenbit
Sonderbehandlung:
M' = 0
(E = r - 1)
z = 0.0
E' = E'max (E = R + 1)
z = ( -1)s * ∞;
-Infinity, Infinity
E' = 0
Typ
MAX < 2R+1
MIN = 2r
Unterlauf (Sonderbehandlung)
gültige Dezimalstellen
TP
1
PT
E [Bit]
C, Java:
float ⇒ single
±3.40282347 E +38
±1.17549435 E -38
±1.40239846 E -45
7
r
8
11
-126
-1022
R
127
1023
C
127
1023
r kleinster Exponent
R größter Exponent
C Verschiebungskonstante
M' ≠ 0
z = ( -1)s * 2r * (0.M’)2;
zusätzliche Zahlen im Unterlauf
NaN (Not a Number);
keine gültige Gleitpunktzahl
double
±1.797693138462315750 E +308
±2.225073858507201383 E -308
±4.940656458412465 E -324
15
http://www.h-schmidt.net/FloatApplet/IEEE754de.html
Propädeutikum
Kapitel 5 Folie 7/7
Herunterladen