09.04.2014 Aufrufe

Kapitel 1: Zahlendarstellungen - Ra.informatik.tu-darmstadt.de ...

Kapitel 1: Zahlendarstellungen - Ra.informatik.tu-darmstadt.de ...

Kapitel 1: Zahlendarstellungen - Ra.informatik.tu-darmstadt.de ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Kapitel</strong> 1:<br />

<strong>Zahlendarstellungen</strong><br />

Technische Grundlagen <strong>de</strong>r Informatik 2<br />

SS 2008<br />

R. Hoffmann<br />

FG Rechnerarchitek<strong>tu</strong>r<br />

Technische Universität Darmstadt<br />

1


1. <strong>Zahlendarstellungen</strong><br />

1-2<br />

1.1 Zahl zur Basis b<br />

1.2 Vorzeichen-Betrag-Darstellung<br />

1.3 Zweikomplementzahl (signed)<br />

1.4 Einskomplementzahl<br />

1.5 Binärcodierte Dezimalzahl<br />

1.6 Gleitkommazahl<br />

IEEE-32-Bit-Gleitkommmaformat<br />

IEEE-64-Bit-Gleitkommmaformat<br />

ANHANG: 3.4 Konvertierung zwischen Zahlensystemen<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


Zahlen<br />

1-3<br />

• [Abstrakte] Zahl = <strong>de</strong>r Wert einer Zahl<br />

• [Konkrete] Zahl = (Darstellung, Wert)<br />

Darstellung<br />

/////<br />

zwei<br />

101<br />

iki<br />

(türkisch)<br />

Wert<br />

5<br />

2<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD<br />

Acht Cova Zeichen <strong>de</strong>s chinesischen Königs Fo-Hi vor<br />

mehr als 4000 Jahren


1-4<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD<br />

Leibniz 1679


Leibniz<br />

1-5<br />

15. März 1679<br />

Das dyadische Zahlensystem. Teil I<br />

Nebenstehen<strong>de</strong> Folge kann leicht fortgesetzt wer<strong>de</strong>n, wenn man, von rechts<br />

nach links gehend, unter die Eins <strong>de</strong>r oberen Zahl jeweils 0 schreibt, bis bei<br />

<strong>de</strong>r oberen auch 0 vorkommt, worunter man dann 1 schreibt; weiter braucht<br />

man nicht zugehen, da die übrigen Ziffern gleich bleiben wie bei <strong>de</strong>r oberen<br />

Zahl.<br />

So wird aus: 1010111 87<br />

1011000 88<br />

Das ist dasselbe, wie wenn man<br />

sagte: 1011000 ist 64<br />

2 6 + * + 2 4 + 2 3 + * * * 16<br />

64 + 16 + 8 8<br />

88<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


1.1 Zahl zur Basis b<br />

1-6<br />

• b-näre Zahl, b-adische Zahl,<br />

polyadische Zahl, Stellenwertzahl,<br />

Positionssystem<br />

• Folge von Ziffern X i є {0,1,.. b-1}<br />

• Darstellung (X n ...X 1 ) b besitzt <strong>de</strong>n<br />

Wert ΣX i ∗b i-1<br />

• wird oft als Gleichung<br />

geschrieben, obwohl es keine ist<br />

• Erweiterung für gebrochene<br />

Zahlen<br />

• b=2 : Dualzahl<br />

• b=10: Dezimalzahl<br />

• b=16 : Hexa<strong>de</strong>zimalzahl<br />

• b=8 : Oktalzahl<br />

• Spezielle Formen<br />

• b ist negativ<br />

• b ist komplexe Zahl<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD<br />

positive Dualzahl =„unsigned number“


Dualzahl, Oktalzahl, Hexa<strong>de</strong>zimalzahl<br />

1-7<br />

Dualzahl<br />

Oktalzahl<br />

Hexa<strong>de</strong>zimalzahl<br />

Wert, dargestellt als<br />

Dezimalzahl<br />

oooo<br />

0<br />

0<br />

0<br />

oool<br />

oolo<br />

ooll<br />

oloo<br />

olol<br />

ollo<br />

olll<br />

looo<br />

lool<br />

lolo<br />

loll<br />

lloo<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

10<br />

11<br />

12<br />

13<br />

14<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

8<br />

9<br />

A<br />

B<br />

C<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

8<br />

9<br />

10<br />

11<br />

12<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD<br />

llol<br />

15<br />

D<br />

13<br />

lllo<br />

16<br />

E<br />

14<br />

llll<br />

17<br />

F<br />

15


Notation<br />

1-8<br />

• Mit X[n] = X n X n-1 .. X 1 ist zum<br />

einen die Darstellung einer Zahl<br />

als Bitfolge gemeint<br />

• Mit X[n] ist zum an<strong>de</strong>ren die n-<br />

stellige Dualzahl gemeint, die<br />

<strong>de</strong>n folgen<strong>de</strong>n[dualen/binären]<br />

Wert besitzt<br />

• Mit kleinem Buchstaben x ist <strong>de</strong>r<br />

Wert <strong>de</strong>r darzustellen<strong>de</strong>n Zahl<br />

gemeint.<br />

• Wenn die Stellenzahl n vereinbart<br />

ist, dann wird verkürzt nur X<br />

anstelle von X[n] benutzt<br />

• Zur Darstellung <strong>de</strong>r Dualziffern<br />

wird hier oft<br />

• o,l benutzt anstelle von<br />

• 0, 1<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


Beispiel: Darstellung und Wert<br />

1-9<br />

X[4] Darstellung<br />

X dualer o<strong>de</strong>r binärer Wert<br />

z.B. Wert x einer 2K-Zahl<br />

(als Dezimalzahl dargestellt)<br />

(als Dezimalzahl dargestellt)<br />

oooo<br />

0<br />

0<br />

oool<br />

1<br />

1<br />

oolo<br />

ooll<br />

oloo<br />

olol<br />

ollo<br />

olll<br />

looo<br />

lool<br />

lolo<br />

loll<br />

lloo<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

8<br />

9<br />

10<br />

11<br />

12<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

-8<br />

-7<br />

-6<br />

-5<br />

-4<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD<br />

llol<br />

13<br />

-3<br />

lllo<br />

14<br />

-2<br />

llll<br />

15<br />

-1


1.2 Vorzeichen-Betrag-Darstellung<br />

1-10<br />

• Vorzeichenbit V x und Betrag |x|<br />

• V x<br />

=o für positive Werte, V x<br />

=l für<br />

negative Werte<br />

• Eine positive Dualzahl X[n] mit<br />

Vorzeichenbit V x nennen wir<br />

Vorzeichenzahl (V x , X[n])<br />

• Zwei Darstellung für die Null sind<br />

möglich<br />

• Darstellung ist<br />

• gut für Multiplikation, Division<br />

• getrennte Behandlung von<br />

Vorzeichen und Betrag<br />

• schlecht für Addition und<br />

Subtraktion<br />

• Hardware zu kompliziert<br />

V x<br />

Betrag<br />

Wertebereich<br />

Abbildung<br />

Rückabbildung<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


Offset Binary, Exzess-Darstellung<br />

1-11<br />

• Durch Addition <strong>de</strong>r Basis 2 n-1 wird <strong>de</strong>r<br />

Zahlenbereich so nach oben verschoben, daß<br />

nur noch Werte ≥ 0 entstehen.<br />

• Definitionsbereich<br />

x= - 2 n-1 ... (2 n-1 –1)<br />

• Abbildung X[n] = x + 2 n-1<br />

• Rückabbildung x = X[n] – 2 n-1<br />

• MSB gibt Vorzeichen an<br />

• = o: negative Zahl<br />

• = l: positive Zahl<br />

• (ist im Vergleich zur 2K-Darstellung invertiert)<br />

• Anwendungen<br />

• Digital/Analog-Umsetzer<br />

• zur Darstellung <strong>de</strong>s Exponenten in<br />

Gleitkommazahlen, als sogen. Charakteristik<br />

Dezimal<br />

x<br />

+7<br />

+6<br />

+5<br />

+4<br />

+3<br />

+2<br />

+1<br />

0<br />

-1<br />

-2<br />

-3<br />

-4<br />

-5<br />

-6<br />

Offset Binary<br />

X[4]<br />

1111<br />

1110<br />

1101<br />

1100<br />

1011<br />

1010<br />

1001<br />

1000<br />

0111<br />

0110<br />

0101<br />

0100<br />

0011<br />

0010<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD<br />

-7<br />

0001<br />

-8<br />

0000


1.3 Zweikomplementzahl<br />

1-12<br />

• auch 2K-Zahl, signed number<br />

• Standard für Festkommarithmetik<br />

• positive Werte wer<strong>de</strong>n nicht verän<strong>de</strong>rt<br />

• x=5 X[4]= 5 = olol<br />

• auf negative Werte wird 2 n addiert<br />

• x= -5 X[4]= -5 + 2 4 = -5 + loooo = 11 = loll<br />

• an <strong>de</strong>m MSB kann man erkennen, daß <strong>de</strong>r dargestellte Wert negativ<br />

ist, dieses Bit wird auch Sign genannt.<br />

• Rückabbildung<br />

• falls X n =l dann muß 2 n abgezogen wer<strong>de</strong>n<br />

• X[4]= loll<br />

x = 11 – 2 4 = -5 = loll – loooo<br />

= oll – looo<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


1-13<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD<br />

Zweikomplementzahl<br />

Abbildung V2K<br />

Rückabbildung V2K -1


Zahlenring<br />

1-14<br />

l ll<br />

l lo -2<br />

l ol<br />

-1<br />

-3<br />

X[3] Darstellung<br />

o oo<br />

und dualer Wert<br />

o ol<br />

0<br />

1<br />

Wert x<br />

2<br />

o lo<br />

3<br />

-4<br />

o ll<br />

l oo<br />

Overflow<br />

• Definitionsbereich ist<br />

unsymmetrisch zur Null<br />

• -2 n-1 darstellbar aber nicht<br />

+2 n-1<br />

• bei <strong>de</strong>r Addition kann das<br />

Ergebnis größer als 2 n-1 -1<br />

o<strong>de</strong>r kleiner als -2 n-1<br />

wer<strong>de</strong>n Überlauf<br />

(Overflow)<br />

• auch Komplementbildung<br />

von -2 n-1 führt zu<br />

Overflow!<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


Wert x <strong>de</strong>r 2K-Zahl X[n]<br />

1-15<br />

X[4] Darstellung<br />

X dualer Wert<br />

Wert x <strong>de</strong>r 2K-Zahl<br />

oooo<br />

0<br />

0<br />

oool<br />

1<br />

1<br />

oolo<br />

ooll<br />

oloo<br />

olol<br />

ollo<br />

olll<br />

looo<br />

lool<br />

lolo<br />

loll<br />

lloo<br />

llol<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

8<br />

9<br />

10<br />

11<br />

12<br />

13<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

-8<br />

-7<br />

-6<br />

-5<br />

-4<br />

-3<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD<br />

lllo<br />

14<br />

-2<br />

llll<br />

15<br />

-1


Sign-Extension<br />

1-16<br />

Arithmetische Erweiterung<br />

• Aufgabe: Die Anzahl <strong>de</strong>r Stellen einer 2K-Zahl soll von m<br />

auf n>m vergrößert wer<strong>de</strong>n, X[m] X[n]<br />

• Lösung: wenn das Sign X m<br />

• o ist , dann wer<strong>de</strong>n alle weiteren Stellen links davon auf o gesetzt<br />

• l ist, dann wer<strong>de</strong>n alle weiteren Stellen links davon auf l gesetzt<br />

• allgemein: X[n] = X m ...X m X[m]<br />

• Beispiel<br />

• X[4] = olol X[8] = ooooolol<br />

• X[4] = loll X[8] = llllloll<br />

• Beachte: 2K-Zahlen, die kleine Werte darstellen, beginnen<br />

mit oo...o o<strong>de</strong>r ll...l<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


Arithmetischer Schift von 2K-Zahlen<br />

1-17<br />

• Nach rechts, Vorzeichenstelle<br />

nachziehen<br />

• Entspricht einer Division durch 2<br />

• Das Vorzeichen bleibt erhalten<br />

• Eine Stelle geht verloren (falls sie<br />

nicht als Nachkommastelle<br />

aufgehoben wird).<br />

x=-7, X 2K<br />

[4] = lool<br />

Nach arith-R-Shift: lloo, x= -4<br />

x=7, X 2K<br />

[4] = olll<br />

Nach arith-R-Shift: ooll, x=3<br />

Beachte Rundung!<br />

• Nach links<br />

• Entspricht Multiplikation mit 2<br />

• Das Ergebnis ist u.U. mit n<br />

Stellen nicht mehr darstellbar<br />

(Überlauf)<br />

x=-2, X2K[4] = lllo<br />

Nach arith-L-Shift: lloo, x= -4<br />

x=3, X2K[4] = ooll<br />

Nach arith-L-Shift: ollo, x=6<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


Komplementbildung<br />

1-18<br />

• Problem: Anstelle von x soll –x<br />

dargestellt wer<strong>de</strong>n<br />

• X[n] X´[n]<br />

• Lösung: X´[n] = 2 n –X[n]<br />

• X´[n] nennt man das<br />

Komplement von X[n] gegen 2 n<br />

• Wie kann es einfach berechnet<br />

wer<strong>de</strong>n?<br />

• Es gilt<br />

• einsetzen in<br />

• ergibt<br />

• Beispiel<br />

ololoo alle Bits negieren lololl + l = lolloo<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


Serielle Komplementbildung<br />

1-19<br />

• Betrachte alle Bits X i von<br />

rechts nach links, i=1 .. n<br />

• Solange das Bit X i =o ist,<br />

wird es unverän<strong>de</strong>rt<br />

übernommen.<br />

• Das erste Bit X i =l wird auch<br />

noch übernommen.<br />

• Alle weiteren Bits wer<strong>de</strong>n<br />

negiert.<br />

• Beispiel<br />

• ololoo lolloo<br />

≥1<br />

exor<br />

X X´<br />

Schaltwerk zur seriellen<br />

Komplementbildung<br />

z ist am Anfang o und wird mit <strong>de</strong>r<br />

ersten l auf l gesetzt, wodurch die<br />

folgen<strong>de</strong>n Bits über exor negiert wer<strong>de</strong>n<br />

z<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


1.4 Einskomplementzahl<br />

1-20<br />

• Auch 1K-Zahl, inzwischen kaum noch benutzt.<br />

• Unterschied zur 2K-Zahl: Es wird das Komplement gegen<br />

2 n -1 gebil<strong>de</strong>t.<br />

• positive Werte wer<strong>de</strong>n nicht verän<strong>de</strong>rt<br />

• x=5 X[4]= 5 = olol<br />

• auf negative Werte wird 2 n -1 addiert<br />

• x= -5 X[4]= -5 + 2 4 -1 = 10 = lolo<br />

• Zahlenbereich ist symmetrisch zur Null.<br />

• für die Null gibt es zwei Darstellungen<br />

• oo...o<br />

• ll...l (falls diese Darstellung nicht verboten wird)<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


1-21<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD<br />

Einskomplementzahl<br />

Abbildung<br />

Abbildungsvorschrift<br />

Rückabbildungsvorschrift


Komplementbildung<br />

1-22<br />

• Beson<strong>de</strong>rs einfach, alle Bits wer<strong>de</strong>n<br />

negiert:<br />

• Warum wird die 1K-Darstellung nicht<br />

benutzt?<br />

• Bei <strong>de</strong>r Addition muß im Falle eines<br />

Übertrages (Carry-Out) eine Korrek<strong>tu</strong>r<br />

+1 addiert wer<strong>de</strong>n (Hardware- und<br />

Zeitaufwand)<br />

• Für die Addition von 2K-Zahlen kann<br />

<strong>de</strong>rselbe Addierer benutzt wer<strong>de</strong>n wie<br />

<strong>de</strong>r für Dualzahlen.<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


1-23<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD<br />

Vergleich


Festkommazahlen in Programmiersprachen<br />

1-24<br />

Typ<br />

Bereich<br />

Bits<br />

Delphi<br />

C<br />

JAVA<br />

C#<br />

Byte<br />

unsigned<br />

byte<br />

0..255<br />

8<br />

un-<br />

Word<br />

Longword<br />

Shortint<br />

Smallint<br />

Longint<br />

Int64<br />

char<br />

unsigned<br />

short int<br />

unsigned<br />

long int<br />

unsigned<br />

long long<br />

int<br />

char<br />

short int<br />

long int<br />

long long<br />

byte<br />

short<br />

int<br />

long<br />

ushort<br />

uint<br />

ulong<br />

sbyte<br />

short<br />

int<br />

long<br />

0..65535<br />

0..4294967295<br />

0..18446744073709551615<br />

-128..127<br />

-32768..32767<br />

-2147483648..2147483647<br />

-2^63..2^63-1<br />

16<br />

32<br />

64<br />

8<br />

16<br />

32<br />

64<br />

signed<br />

signed<br />

2K<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD<br />

int<br />

Currency<br />

-922337203685477.5808..<br />

922337203685477.5807<br />

64


1.5 Binärcodierte Dezimalzahl<br />

1-25<br />

• Eine Codierung von Dezimalzahlen im Rechner<br />

• Grün<strong>de</strong> zur Verwendung<br />

• Keine Konvertierung für die externe Darstellung erfor<strong>de</strong>rlich<br />

• z.B. in Taschenrechnern<br />

• Vermeidung von Approximationsfehlern<br />

• 0,1 = o,o ooll ooll ooll .... (nicht endlich!)<br />

• In <strong>de</strong>r kommerziellen Datenverarbei<strong>tu</strong>ng<br />

• Je<strong>de</strong> BCD-Ziffer wird durch 4 Bits dual codiert.<br />

• In ungepackter Form wer<strong>de</strong>n 8 Bits zur Codierung benutzt.<br />

Dabei wer<strong>de</strong>n die höchstwertigen Bits auf oooo o<strong>de</strong>r auf ooll<br />

(ASCII) gesetzt, o<strong>de</strong>r <strong>de</strong>r EBCDIC wird verwen<strong>de</strong>t.<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


Beispiele<br />

1-26<br />

• Gepackte BCD-Zahlen<br />

• 59 10 = olol lool BCD<br />

• 81 10 = looo oool BCD<br />

• Ungepackte BCD-Zahlen<br />

• 59 10 = ooooolol oooolool BCD<br />

• 81 10 = oooolooo oooooool BCD<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


Negative BCD-Zahlen<br />

1-27<br />

• Möglichkeiten<br />

• Vorzeichen-Betrag-Darstellung<br />

• 9-Komplement<br />

• Komplement gegen 10 m -1<br />

• bei m Dezimalstellen<br />

• 10-Komplement<br />

• Komplement gegen 10 m<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


9-Komplement<br />

1-28<br />

• m = Anzahl <strong>de</strong>r Stellen<br />

• |x| < 499…9<br />

• Vorzeichenstelle (4 Bits)<br />

• 0 bis 4: positive Zahlen<br />

• 5 bis 9: negative Zahlen<br />

• Zwei Darstellungen <strong>de</strong>r Null<br />

• 099..9 und 999..9<br />

• Komplementbildung<br />

• (X 9K<br />

,x)(X´9K ,-x)<br />

• Für je<strong>de</strong> Ziffer wird Differenz<br />

gegen 9 gebil<strong>de</strong>t<br />

• durch Addition von 6 = ollo<br />

und anschließen<strong>de</strong>r Negation<br />

aller Bits<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


10-Komplement<br />

1-29<br />

• m = Anzahl <strong>de</strong>r Stellen<br />

• -500…0 ≤ x ≤ 499…9<br />

• Vorzeichenstelle (4 Bits)<br />

• 0 bis 4: positive Zahlen<br />

• 5 bis 9: negative Zahlen<br />

• Komplementbildung<br />

• (X1 10K<br />

,x)(X´10K ,-x)<br />

• Komplement von X 10K<br />

=500…0 ist<br />

verboten (Überlauf)<br />

• 1.) Negiere alle Bits und addiere<br />

1, merke Überträge zwischen<br />

<strong>de</strong>n Tetra<strong>de</strong>n<br />

• 2.) Addiere lolo (-6) auf alle<br />

Tetra<strong>de</strong>n, die keinen Übertrag<br />

erzeugt haben<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


BCD-Darstellung in <strong>de</strong>r IntelArchitec<strong>tu</strong>re-32<br />

1-30<br />

• 80 Bits<br />

• Vorzeichen S und 18 Dezimalstellen (Magni<strong>tu</strong><strong>de</strong>)<br />

• Kompatibel zum COBOL-Standard<br />

S d17 d16 d15 .... d0<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


1.6 Gleitkommazahl, Motivation<br />

1-31<br />

• Festkommazahlen können nur<br />

einen relativ kleinen<br />

Zahlenbereich überstreichen<br />

• n Bit Wort<br />

• positive Dualzahl: 0 .. 2 n -1<br />

• Darstellung größerer Zahlen<br />

durch Verschiebung <strong>de</strong>s fiktiven<br />

Kommas nach rechts um m<br />

Stellen: Zahlenbereich wird mit<br />

2 m multipliziert<br />

• Problem<br />

• Abstand zwischen <strong>de</strong>n Zahlen ist<br />

2 m<br />

• Verschiebung <strong>de</strong>s Kommas um m<br />

Stellen nach links: Zahlenbereich<br />

wird durch 2 m dividiert<br />

• Abstand zwischen <strong>de</strong>n Zahlen ist<br />

2 -m<br />

• Der Programmierer muß sich für<br />

die Anwendung <strong>de</strong>n<br />

Zahlenbereich genau überlegen<br />

und das fiktive Komma<br />

programmtechnisch mitführen<br />

(die Festkommazahl wird auf 2 m<br />

normiert.) Ein Überlauf wird<br />

durch geeignete Normierung<br />

vermie<strong>de</strong>n<br />

• Lösung<br />

• Codierung <strong>de</strong>r Kommastellung<br />

und automatische Normierung<br />

• Zusätzliche Bits für die<br />

Kommastellung<br />

• Gleiten<strong>de</strong>s Komma: floating point<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


Eigenschaften <strong>de</strong>r Gleitkommazahl<br />

1-32<br />

• Vorteile<br />

• größerer Wertebereich<br />

darstellbar<br />

• seltener: Überlauf (Overflow),<br />

Unterlauf (Un<strong>de</strong>rflow)<br />

• Programmierung vereinfacht<br />

(keine vorausgeplante<br />

Normierung)<br />

• Relative Darstellungsgenauigkeit<br />

in etwa konstant<br />

• Allgemein<br />

• Anzahl <strong>de</strong>r GK-Zahlen ist<br />

endlich.<br />

• Es gibt keine<br />

• beliebig großen/kleinen Zahlen<br />

• beliebig dicht benachbarten GKZ<br />

• Der Abstand zwischen<br />

benachbarten GKZ ist nicht<br />

konstant.<br />

• Nachteile<br />

• Hardware-Implementierung<br />

<strong>de</strong>utlich komplexer als für<br />

Festkommazahlen<br />

• Rundungsfehler entstehen,<br />

insbeson<strong>de</strong>re bei <strong>de</strong>r<br />

Addition/Subtraktion von Zahlen,<br />

<strong>de</strong>ren Kommastellungen sich<br />

stark voneinan<strong>de</strong>r unterschei<strong>de</strong>n.<br />

Genauigkeit wird vorgetäuscht.<br />

• Je nach <strong>de</strong>r Auswer<strong>tu</strong>ngsart von<br />

Formeln ergeben sich<br />

unterschiedlich große Fehler<br />

(a-b) + (c-d) ≠ (a+c) – (b+d)<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


Normalisierung<br />

1-33<br />

• Wert x<br />

• Mantisse mx<br />

• Basis b<br />

• Exponent ex<br />

• Vorzeichen v x =+1/-1<br />

• k wird festgelegt (meist 0 o<strong>de</strong>r 1)<br />

• Allgemein: Mantisse wird<br />

normalisiert, um die Darstellung<br />

ein<strong>de</strong>utig zu machen und um<br />

immer mit <strong>de</strong>r höchsten<br />

Genauigkeit zu rechnen,<br />

• mx norm<br />

hat r Stellen hinter <strong>de</strong>m<br />

Komma, die erste Stelle hinter <strong>de</strong>m<br />

Komma ist >0<br />

Darstellung mehr<strong>de</strong>utig<br />

x = mx · b ex<br />

x = v x ·(mx norm · b k ) · b ex<br />

mx norm<br />

Normalisierungsbedingung k=0<br />

^<br />

mx norm = mx norm<br />

1/b ≤ mx norm ≤ 1 – 1/b r < 1<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


Normalisierung (2)<br />

1-34<br />

• Speziell beim IEEE 754 -<br />

Standard wur<strong>de</strong> b=2 und k=1<br />

gewählt, d.h. die normalisierte<br />

Mantisse (mit ∧ ) liegt zwischen 1<br />

und 2-ε<br />

IEEE is an abbreviation for Insti<strong>tu</strong>te of<br />

Electrical and Electronic Engineers<br />

x = v x ·(mx norm · b k ) · b ex<br />

mx norm<br />

Normalisierungsbedingung k=1<br />

1 ≤ mx norm ≤ b – 1/b r-1 < b<br />

x = v x ∗ mx norm ∗ b ex<br />

l ≤ mx norm ≤ l,ll … l<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


Beispiel Normalisierung bei b=10<br />

1-35<br />

• Mehr<strong>de</strong>utige Darstellung von<br />

300<br />

• 300 = 300·10 0 mx=300, ex=0<br />

• 300 = 30,0·10 1 mx=30, ex=1<br />

• 300 = 3,00·10 2 mx=3, ex=2<br />

• 300 = 0,30 ·10 3 mx=0,3 , ex=3<br />

• Jetzt mit k=1, r=3 normieren<br />

• Normierte Mantisse<br />

• mx norm<br />

Minimal = 0,100<br />

• mx norm<br />

Maximal = 0,999<br />

• mx^norm<br />

Minimal=1,00<br />

• mx^norm<br />

Maximal=9,99<br />

• Ein<strong>de</strong>utige Darstellung von 300<br />

• (k=0): mx norm<br />

=0,3 ex=3<br />

• (k=1): mx^norm<br />

=3,0 ex=2<br />

x = v x ·(mx norm · 10 k ) · 10 ex<br />

mx norm<br />

k=1:<br />

x = v x ∗ mx norm ∗ b ex<br />

1 ≤ mx norm ≤ 9,99 … 9<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


Relativer Fehler<br />

1-36<br />

• Abstand zwischen zwei benachbarten<br />

Werten ergibt sich aus <strong>de</strong>m LSB <strong>de</strong>r<br />

Mantisse und <strong>de</strong>m Exponenten<br />

(r=Stellen <strong>de</strong>r Mantisse)<br />

• Relativer Fehler (LSB unsicher)<br />

• höchstens<br />

• b -r /b k-1<br />

• min<strong>de</strong>stens<br />

• b -r /(b k -b -r )<br />

IEEE, k=1<br />

l,oo ... ox 2 -r /1<br />

l,ll ... lx 2 -r /(2-2 -r ) ≈ 2 -r /2<br />

Wie ungenau ist die Darstellung von 8 Millionen € wenn r=24<br />

Stellen benutzt wer<strong>de</strong>n?<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD<br />

Maximaler Relativer Fehler: 2 -24 etwa 0,5 € ungenau


Darstellung <strong>de</strong>s Exponenten<br />

1-37<br />

• Charakteristik (biased<br />

exponent)<br />

• Auf <strong>de</strong>n Exponenten (true<br />

exponent) wird eine Basis (bias)<br />

addiert, so daß nur noch positive<br />

Werte entstehen. (Excess-Darst.)<br />

• 1. Möglichkeit:<br />

Addition von 2 n-1<br />

• EX[n] = ex + 2 n-1 ,<br />

• verwen<strong>de</strong>t bei DEC-Rechnern,<br />

IBM/Siemens-Großrechner mit<br />

b=16<br />

• 2. Möglichkeit:<br />

Addition von 2 n-1 -1<br />

• EX[n] = ex + 2 n-1 -1<br />

• IEEE-Standard<br />

• Durch Verwendung <strong>de</strong>r<br />

Charakteristik-Darstellung und<br />

<strong>de</strong>r Anordnung (Exponent steht<br />

vor <strong>de</strong>r Mantisse) kann <strong>de</strong>r<br />

Größenvergleich zweier GK-<br />

Zahlen relativ leicht durchgeführt<br />

wer<strong>de</strong>n:<br />

• 1. Vorzeichen prüfen<br />

• 2. Dualzahlen-Vergleich <strong>de</strong>r<br />

Charakteristiken<br />

• 3. Dualzahlen-Vergleich <strong>de</strong>r<br />

Mantissen<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


IEEE-32-Bit-Gleitkommmaformat<br />

1-38<br />

• Vorzeichen V x (Sign)<br />

• Charakteristik EX = ex+127<br />

• für ex = -126 … +127<br />

• Die Mantisse MX = 1,FX wird<br />

auf Werte zwischen 1 und 2<br />

normalisiert<br />

• 1 ≤MX ≤ 2 - 2 -23<br />

• Dargestellt wer<strong>de</strong>n nur die 23<br />

Binärstellen hinter <strong>de</strong>m Komma<br />

(fraction FX), da die Stelle vor<br />

<strong>de</strong>m Komma immer gleich 1 ist.<br />

• Wert x<br />

• Betragsmäßig größter und<br />

kleinster Wert (normalisiert):<br />

V x EX F x<br />

1 8 23<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


1-39<br />

Gültige und ungültige Exponenten<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


Beispiele<br />

1-40<br />

x = 3,5 = 1,75 ∗ 2 1 = 1,75 ∗ 2 128-127<br />

= l,llo oooo oooo oooo oooo oooo ∗ 2 128-127<br />

= (o, 128, 0,75)<br />

= (o, looo oooo, llo oooo oooo oooo oooo oooo)<br />

x = -11,375 = -loll,oll ∗ 2 0 = –l,olloll ∗ 2 3<br />

= (l, 130, 0,421875)<br />

= (l, looo oolo, oll ollo oooo oooo oooo oooo)<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


1-41<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD<br />

Son<strong>de</strong>rfälle (1)


1-42<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD<br />

Son<strong>de</strong>rfälle (2)<br />

Nach unten<br />

Nach Null<br />

Nach oben<br />

zur nächsten


IEEE-64-Bit-Gleitkommmaformat<br />

1-43<br />

• Das IEEE-64-Bit-Gleitkommaformat (long real) entspricht<br />

<strong>de</strong>m IEEE-32-Bit-Gleitkommaformat (short real) in seiner<br />

Aufbaustruk<strong>tu</strong>r.<br />

• Für das Vorzeichenbit wird 1 Bit, für die Charakteristik<br />

wer<strong>de</strong>n 11 Bits (bias = 1023) und für Fraction wer<strong>de</strong>n 52<br />

Bits benutzt.<br />

• Für noch höhere Ansprüche an die Rechengenauigkeit kann<br />

das IEEE-Gleitkommaformat auf (1, ≥ 15, ≥ 63) Bits<br />

erweitert wer<strong>de</strong>n.<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


Gleitkommazahlen in Sprachen<br />

1-44<br />

32-Bit<br />

IEEE<br />

Short<br />

Real<br />

64-Bit<br />

IEEE<br />

Long<br />

Real<br />

80-Bit<br />

IEEE<br />

96-Bit<br />

IEEE<br />

1.2 x 10 -38<br />

.. 1.7 x<br />

10 38<br />

2.2<br />

x 10 -324 ..<br />

2.0 x 10 308<br />

Bereich<br />

+/-<br />

Dezimal-<br />

stellen-<br />

Genauigkeit<br />

7-8<br />

15-16<br />

Intel-<br />

Architec<strong>tu</strong>re<br />

32<br />

Single<br />

Real<br />

Double<br />

Real<br />

Exten<strong>de</strong>d<br />

Real<br />

FORTRAN<br />

real<br />

double<br />

precision<br />

C<br />

float<br />

double<br />

long<br />

double<br />

JAVA<br />

float<br />

double<br />

C#<br />

float<br />

double<br />

Delphi<br />

Single<br />

Double<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD<br />

128-Bit<br />

real(16)<br />

<strong>de</strong>cimal


Decimal Type in C#<br />

1-45<br />

• Der Decimal Datentyp hat eine Größe von 128 Bit. Er weist<br />

also eine höhere Genauigkeit gegenüber <strong>de</strong>m floating pointtype<br />

auf, hat aber im Vergleich zum floating point-type einen<br />

engeren Gültigkeitsbereich.<br />

• Dieser Datentyp ist dienlich für finanzmathematische<br />

Berechungen o<strong>de</strong>r Währungsumrechungen. Der<br />

Gültigkeitsbereich geht von 1,0 * 10^-28 bis 7,9 * 10^28<br />

mit 28-29 signifikanten Stellen.<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


1-46<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD<br />

ANHANG<br />

• 3.4 Konvertierung zwischen Zahlensystemen<br />

• Summationsmetho<strong>de</strong><br />

• Divisionmetho<strong>de</strong><br />

• Multiplikationsmetho<strong>de</strong>


3.4 Konvertierung zwischen Zahlensystemen<br />

1-47<br />

• Gegeben: m-stellige ganze Zahl A zur Basis a<br />

• Gesucht: n-stellige ganze Zahl zur Basis b<br />

• Lösungsansatz: stelle A o<strong>de</strong>r B als Potenzreihe o<strong>de</strong>r nach <strong>de</strong>m<br />

Hornerschema dar, setze A=B.<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


Summationsmetho<strong>de</strong><br />

1-48<br />

• A a B b<br />

• Erstelle eine Tabelle, in <strong>de</strong>r für<br />

je<strong>de</strong> Ziffer A i und die<br />

Stellenwertigkeit a i-1 <strong>de</strong>r<br />

äquivalente Summand A i ∗ a i-1<br />

(codiert im Zielsystem b)<br />

enthalten ist.<br />

• Lies für Ziffer A i (Zeile <strong>de</strong>r<br />

Tabelle) mit <strong>de</strong>r Stellenwertigkeit<br />

a i-1 (Spalte) <strong>de</strong>n äquivalenten<br />

Summan<strong>de</strong>n ☺.<br />

• Addiere alle Summan<strong>de</strong>n im<br />

Zielsystem.<br />

Ziffer<br />

A i<br />

Basis a<br />

0<br />

1<br />

...<br />

a-1<br />

Äquivalenter Summand, für<br />

Stellenwertigkeit a i-1 ,Basis b<br />

i=0 1 2 ... m-1<br />

☺<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


1-49<br />

Hexa<strong>de</strong>zimalzahl Dezimalzahl<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD<br />

Beispiel


1-50<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD<br />

Dezimalzahl Hexa<strong>de</strong>zimalzahl<br />

Beispiel


Divisionmetho<strong>de</strong><br />

1-51<br />

• A a B b<br />

• Bei <strong>de</strong>r sukzessiven ganzzahligen<br />

Division durch b stellen die Reste<br />

die gesuchten Ziffern B 1 , B 2 , .. B n<br />

dar.<br />

• Divison und Restbildung erfolgt<br />

im Quellsystem<br />

• Ziffernumcodierung ist<br />

erfor<strong>de</strong>rlich wenn b>a ist<br />

• Für <strong>de</strong>n Menschen geeignet; im<br />

Rechner sollte die Division<br />

vermie<strong>de</strong>n wer<strong>de</strong>n.<br />

Beispiel: Dezimalzahl Dualzahl<br />

LSB<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


Divisionsmetho<strong>de</strong>, Dualzahl Dezimalzahl<br />

1-52<br />

• Dieses Beispiel <strong>de</strong>monstriert<br />

• <strong>de</strong>n Aufwand im Rechner wegen <strong>de</strong>r Division von Dualzahlen<br />

• die Ziffernumcodierung, weil b>a<br />

• Wahl einer Metho<strong>de</strong> mit weniger Aufwand<br />

196 10 19 R 6<br />

10<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


Divisonsmetho<strong>de</strong> für gebrochene Zahlen<br />

1-53<br />

• Gegeben: Gebrochene Dezimalzahl 0,A -1 A -2 ... A -m<br />

• Gesucht: Gebrochene Dualzahl B b = o,B -1 B -2 ... B -n (hier speziell b=2)<br />

• Ansatz: o,B -1 B -2 ... B -n = A<br />

• for i:=1 to n do (im Quellsystem)<br />

• A := A ∗ b // A /(1/b)<br />

• B -i<br />

:= GanzzahligerTeil<br />

• A := A - B -i<br />

• Die Metho<strong>de</strong> kann zu <strong>de</strong>n Divisionsmetho<strong>de</strong>n gerechnet wer<strong>de</strong>n, weil<br />

eine Division durch 1/b im Quellsystem durchgeführt wird, die einer<br />

Multiplikation mit b entspricht.<br />

• Für gebrochene Zahlen ist die Divisionsmetho<strong>de</strong> im Rechner geeignet.<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


Beispiel: Dezimal Dual<br />

1-54<br />

• Beispiel<br />

• 0,421875 *2 = 0,84375<br />

• 0,84375 * 2 = 1,6875<br />

• 0,6875 * 2 = 1,3750<br />

• 0,3750 * 2 = 0,75<br />

• 0,75 * 2 = 1,5<br />

• 0,5 * 2 = 1,0<br />

• 0 * 2 = 0,0<br />

• B = o,ollollo<br />

• Zum Nachrechnen<br />

• 0,1 = o,o ooll ooll ooll ... nicht endlich!<br />

• Multiplikation mit 2 kann durch BCD-Addition (x+x=2x) erfolgen.<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD


Beispiel: Dual Dezimal<br />

1-55<br />

Beispiel<br />

o,ollollo * lolo =<br />

oo,llollo um 1 Stelle verschoben<br />

ooll,ollo um 3 Stellen verschoben<br />

oloo,oolllo * lolo<br />

oo,olllo<br />

oool,llo<br />

oolo,oollo * lolo<br />

oo,ollo<br />

oool,lo<br />

oool,lllo<br />

oool,llo<br />

olll,oo<br />

looo,llo * lolo<br />

ol,lo<br />

ollo,<br />

olll,lo * lolo<br />

ol,o<br />

oloo,<br />

0lol,o<br />

B = 0,421875<br />

Die Multiplikation mit 10=lolo wird auf die stellenversetzte Addition zurückgeführt<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD<br />

Es ergeben sich die Dezimalziffern im BCD-Co<strong>de</strong>


Multiplikationsmetho<strong>de</strong><br />

1-56<br />

• A a<br />

B b<br />

geeignet zur Konvertierung ganzer Zahlen<br />

• 1. Die Ziffern A i<br />

wer<strong>de</strong>n<br />

umcodiert in die Basis b<br />

im Rechner<br />

(Rechnung im Zielsystem)<br />

• 2. B:=0<br />

• 3. for i:=m downto 1 do<br />

• B:=B ∗ a + A i<br />

Techn. Grundlagen <strong>de</strong>r Informatik 2, SS 08, R. Hoffmann, TUD

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!