08.03.2014 Aufrufe

Technische Grundlagen der Informatik – Kapitel 8

Technische Grundlagen der Informatik – Kapitel 8

Technische Grundlagen der Informatik – Kapitel 8

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>Technische</strong> <strong>Grundlagen</strong><br />

<strong>der</strong> <strong>Informatik</strong> – <strong>Kapitel</strong> 8<br />

Prof. Dr. Sorin A. Huss<br />

Fachbereich <strong>Informatik</strong><br />

TU Darmstadt


<strong>Kapitel</strong> 8: Themen<br />

• Zahlensysteme<br />

- Dezimal<br />

- Binär<br />

• Vorzeichen und Betrag<br />

• Zweierkomplement<br />

• Zahlen mit Bruchanteilen<br />

- Festkomma<br />

- Gleitkomma<br />

- Rundung<br />

- Addition<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 2


1000's column<br />

8's column<br />

10's column<br />

100's column<br />

2's column<br />

4's column<br />

1's column<br />

1's column<br />

Zahlensysteme<br />

• Dezimalzahlen<br />

5374 10<br />

=<br />

• Binärzahlen<br />

1101 2<br />

=<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 3


1000's column<br />

8's column<br />

10's column<br />

100's column<br />

2's column<br />

4's column<br />

1's column<br />

1's column<br />

Zahlensysteme<br />

• Dezimalzahlen<br />

5374 10<br />

= 5 × 10 3 + 3 × 10 2 + 7 × 10 1 + 4 × 10 0<br />

• Binärzahlen<br />

five<br />

thousands<br />

three<br />

hundreds<br />

seven<br />

tens<br />

four<br />

ones<br />

1101 2<br />

= 1 × 2 3 + 1 × 2 2 + 0 × 2 1 + 1 × 2 0 = 13 10<br />

one<br />

eight<br />

one<br />

four<br />

no<br />

two<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 4<br />

one<br />

one


Zweierpotenzen<br />

• 2 0 =<br />

• 2 1 =<br />

• 2 2 =<br />

• 2 3 =<br />

• 2 4 =<br />

• 2 5 =<br />

• 2 6 =<br />

• 2 7 =<br />

• 2 8 =<br />

• 2 9 =<br />

• 2 10 =<br />

• 2 11 =<br />

• 2 12 =<br />

• 2 13 =<br />

• 2 14 =<br />

• 2 15 =<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 5


Zweierpotenzen<br />

• 2 0 = 1<br />

• 2 1 = 2<br />

• 2 2 = 4<br />

• 2 3 = 8<br />

• 2 4 = 16<br />

• 2 5 = 32<br />

• 2 6 = 64<br />

• 2 7 = 128<br />

• 2 8 = 256<br />

• 2 9 = 512<br />

• 2 10 = 1024<br />

• 2 11 = 2048<br />

• 2 12 = 4096<br />

• 2 13 = 8192<br />

• 2 14 = 16384<br />

• 2 15 = 32768<br />

• Sehr nützlich, wenigstens die ersten 10 im Kopf zu haben<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 6


Zahlenkonvertierung<br />

• Binär nach dezimal umrechnen:<br />

• Wandele 10011 2 ins Dezimalsystem um<br />

• Dezimal nach binär umrechnen<br />

• Wandele 47 10 ins Binärsystem um<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 7


Zahlenkonvertierung<br />

• Binär nach dezimal umrechnen:<br />

• Wandele 10011 2 ins Dezimalsystem um<br />

• 16×1 + 8×0 + 4×0 + 2×1 + 1×1 = 19 10<br />

• Dezimal nach binär umrechnen<br />

• Wandele 47 10 ins Binärsystem um<br />

• 32×1 + 16×0 + 8×1 + 4×1 + 2×1 + 1×1 = 101111 2<br />

• Auf zwei Arten möglich:<br />

• Jeweils nach größter noch passen<strong>der</strong> Zweierpotenz suchen<br />

• Durch immer größer werdende Zweierpotenzen dividieren<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 8


Binärzahlen und Wertebereiche<br />

• N-stellige Dezimalzahl<br />

• Wie viele verschiedene Werte? 10 N<br />

• Wertebereich? [0, 10 N - 1]<br />

• Beispiel: 3-stellige Dezimalzahl:<br />

• 10 3 = 1000 mögliche Werte<br />

• Wertebereich: [0, 999]<br />

• N-bit Binärzahl<br />

• Wie viele verschiedene Werte? 2 N<br />

• Wertebereich : [0, 2 N - 1]<br />

• Beispiel : 3-bit Binärzahl<br />

• 2 3 = 8 mögliche Werte<br />

• Wertebereich : [0, 7] = [000 2 , 111 2 ]<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 9


Hexadezimale Zahlen<br />

Hex-Ziffer Entspricht Dezimal Entspricht Binär<br />

0 0<br />

1 1<br />

2 2<br />

3 3<br />

4 4<br />

5 5<br />

6 6<br />

7 7<br />

8 8<br />

9 9<br />

A 10<br />

B 11<br />

C 12<br />

D 13<br />

E 14<br />

F 15<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 10


Hexadezimale Zahlen<br />

Hex-Ziffer Entspricht Dezimal Entspricht Binär<br />

0 0 0000<br />

1 1 0001<br />

2 2 0010<br />

3 3 0011<br />

4 4 0100<br />

5 5 0101<br />

6 6 0110<br />

7 7 0111<br />

8 8 1000<br />

9 9 1001<br />

A 10 1010<br />

B 11 1011<br />

C 12 1100<br />

D 13 1101<br />

E 14 1110<br />

F 15 1111<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 11


Hexadezimalzahlen<br />

• Schreibweise zur Basis 16<br />

• Kürzere Darstellung für lange Binärzahlen<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 12


Umwandeln von Hexadezimaldarstellung<br />

• Umwandeln von hexadezimal nach binär:<br />

• Wandele 4AF 16 (auch geschrieben als 0x4AF) nach binär<br />

• Umwandeln von hexadezimal nach dezimal:<br />

• Wandele 0x4AF nach dezimal<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 13


Umwandeln von Hexadezimaldarstellung<br />

• Umwandeln von hexadezimal nach binär:<br />

• Wandele 4AF 16 (auch geschrieben als 0x4AF) nach binär<br />

• 0100 1010 1111 2<br />

• Umwandeln von hexadezimal nach dezimal:<br />

• Wandele 0x4AF nach dezimal<br />

• 16 2 ×4 + 16 1 ×10 + 16 0 ×15 = 1199 10<br />

14<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss |


Bits, Bytes, Nibbles…<br />

• Bits (Einheit b)<br />

• Höchstwertiges Bit (msb)<br />

• Niedrigstwertiges Bit (lsb)<br />

• Bytes (Einheit B) & Nibbles<br />

• Bytes<br />

• Höchstwertiges Byte (MSB)<br />

• Niedrigstwertiges Byte (LSB)<br />

10010110<br />

most<br />

significant<br />

bit<br />

byte<br />

10010110<br />

nibble<br />

CEBF9AD7<br />

most<br />

significant<br />

byte<br />

least<br />

significant<br />

bit<br />

least<br />

significant<br />

byte<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 15


Zweierpotenzen und Präfixe<br />

• 2 10 = 1 Kilo (K) ≈ 1000 (1024)<br />

• 2 20 = 1 Mega (M) ≈ 1 Million (1,048,576)<br />

• 2 30 = 1 Giga (G) ≈ 1 Milliarde (1,073,741,824)<br />

• Beispiele<br />

• 4 GB: Maximal adressierbare Speichergröße für 32b-Prozessoren<br />

• 16M x 32b: erste GDDR5-Speicherchips für Grafikkarten<br />

• Vorsicht Falle:<br />

• Deutsch 10 9 = 1 Milliarde<br />

• US English 10 9 = 1 billion<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 16


Zweierpotenzen schnell schätzen<br />

• Was ist <strong>der</strong> Wert von 2 24 ?<br />

• Wie viele verschiedene Werte kann eine 32b Variable annehmen?<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 17


Zweierpotenzen schnell schätzen<br />

• Was ist <strong>der</strong> Wert von 2 24 ?<br />

2 4 × 2 20 ≈ 16 Millionen<br />

• Wie viele verschiedene Werte kann eine 32b Variable annehmen?<br />

2 2 × 2 30 ≈ 4 Milliarden<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 18


Addition<br />

• Dezimal<br />

• Binär<br />

+<br />

11<br />

3734<br />

5168<br />

8902<br />

carries Überträge<br />

+<br />

11 carries Überträge<br />

1011<br />

0011<br />

1110<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 19


Beispiele für Addition von Binärzahlen<br />

• Addiere die 4-bit Binärzahlen<br />

+<br />

1001<br />

0101<br />

• Addiere die 4-bit Binärzahlen<br />

+<br />

1011<br />

0110<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 20


Beispiele für Addition von Binärzahlen<br />

• Addiere die 4-bit Binärzahlen<br />

• Addiere die 4-bit Binärzahlen<br />

+<br />

1<br />

1001<br />

0101<br />

1110<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 21<br />

111<br />

1011<br />

+ 0110<br />

10001<br />

Überlauf!


Überlauf<br />

• Digitale Systeme arbeiten mit einer festen Anzahl an Bits<br />

• In <strong>der</strong> Regel, es gibt aber durchaus Ausnahmen!<br />

• Eine Addition läuft über, wenn ihr Ergebnis nicht mehr in die<br />

verfügbare Anzahl von Bits hineinpasst<br />

• Beispiel: 11+6, gerechnet mit 4b Breite<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 22


Vorzeichenbehaftete Binärzahlen<br />

• Darstellung als Vorzeichen und Betrag<br />

• Zweierkomplement<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 23


Darstellung als Vorzeichen und Betrag<br />

• 1 Vorzeichenbit, N-1 Bits für Betrag<br />

• Vorzeichenbit ist höchstwertiges Bit (msb)<br />

• Positive Zahl: Vorzeichenbit = 0<br />

• Negative Zahl: Vorzeichenbit = 1<br />

<br />

A: a , a , a , a , a<br />

A<br />

<br />

N1 N2 2 1 0<br />

n2<br />

<br />

an1<br />

( 1) a 2<br />

i0<br />

i<br />

i<br />

<br />

• Beispiel: 4-bit Vorzeichen/Betrag-Darstellung von ± 6:<br />

+6 =<br />

- 6 =<br />

• Wertebereich einer Zahl in Vorzeichen/Betrag-Darstellung :<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 24


Darstellung als Vorzeichen und Betrag<br />

• 1 Vorzeichenbit, N-1 Bits für Betrag<br />

• Vorzeichenbit ist höchstwertiges Bit (msb)<br />

• Positive Zahl: Vorzeichenbit = 0<br />

• Negative Zahl: Vorzeichenbit = 1<br />

<br />

A: a , a , a , a , a<br />

A<br />

<br />

N1 N2 2 1 0<br />

n2<br />

<br />

an1<br />

( 1) a 2<br />

i0<br />

i<br />

i<br />

<br />

• Beispiel: 4-bit Vorzeichen/Betrag-Darstellung von ± 6:<br />

+6 = 0110<br />

- 6 = 1110<br />

• Wertebereich einer Zahl in Vorzeichen/Betrag-Darstellung :<br />

[-(2 N-1 -1), 2 N-1 -1]<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 25


Darstellung als Vorzeichen/Betrag: Probleme<br />

• Addition schlägt fehl<br />

• Beispiel: -6 + 6:<br />

1110<br />

+ 0110<br />

10100 (falsch!)<br />

• Zwei Darstellungen für Null (± 0):<br />

1000 (-0)<br />

0000 (+0)<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 26


Zahlendarstellung im Zweierkomplement<br />

• Behebt Probleme <strong>der</strong> Vorzeichen/Betrag-Darstellung<br />

• Addition liefert wie<strong>der</strong> korrekte Ergebnisse<br />

• Nur eine Darstellung für Null<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 27


Zahlendarstellung im Zweierkomplement<br />

• Wie vorzeichenlose Binärdarstellung, aber …<br />

• msb hat nun einen Wert von -2 N-1<br />

n2<br />

<br />

n1<br />

i<br />

A an<br />

1<br />

2 ai2<br />

i0<br />

• Größte positive 4b Zahl :<br />

• Kleinste negative 4b Zahl :<br />

• msb gibt immer noch das Vorzeichen an<br />

• 1=negativ, 0=positiv<br />

• Wertebereich einer N-bit Zweierkomplementzahl:<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 28


Zahlendarstellung im Zweierkomplement<br />

• Wie vorzeichenlose Binärdarstellung, aber …<br />

• msb hat nun einen Wert von -2 N-1<br />

n2<br />

<br />

n1<br />

i<br />

A an<br />

1<br />

2 ai2<br />

i0<br />

• Größte positive 4b Zahl : 0111 = 2 2 + 2 1 + 2 0 = 7<br />

• Kleinste negative 4b Zahl : 1000 = -2 3 = -8<br />

• msb gibt immer noch das Vorzeichen an<br />

• 1=negativ, 0=positiv<br />

• Wertebereich einer N-bit Zweierkomplementzahl:<br />

[-(2 N-1 ), 2 N-1 -1]<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 29


Darstellung im Zweierkomplement<br />

• Annahme: Umzuwandelnde Zahlen liegen im Wertebereich<br />

• N bit breites Zweierkomplement<br />

• Stelle Wert k im Zweierkomplement z dar<br />

• Positive Zahlen k >= 0<br />

• Normale Binärdarstellung, restliche Bits bis einschließlich msb mit 0 auffüllen<br />

• Beispiel: N = 5b, k = 3 10 z=00011<br />

• Negative Zahlen k < 0<br />

• msb auf 1 setzen, Wert soweit ist nun -2 N-1<br />

• Nun muss aufaddiert werden, bis gewünschter Zielwert k erreicht<br />

• Differenz d = 2 N-1 + k, diese binär in untere Bits eintragen (Beginn bei lsb)<br />

• Beispiel: N = 5b, k = -3 10 d = 2 4 -3 = 16-3 = 13 z = 11101<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 30


Zweierkomplement arithmetisch bilden<br />

• In beide Richtungen anwendbar<br />

• Vorzeichenwechsel: k -k<br />

• Algorithmus<br />

1. Alle Bits invertieren (01, 10)<br />

2. Dann 1 addieren<br />

• Beispiel: Vorzeichenwechsel von 3 10 = 00011 2<br />

• Beispiel: Vorzeichenwechsel von -3 10 = 11101 2<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 31


Zweierkomplement arithmetisch bilden<br />

• In beide Richtungen anwendbar<br />

• Vorzeichenwechsel: k -k<br />

• Algorithmus<br />

1. Alle Bits invertieren (01, 10)<br />

2. Dann 1 addieren<br />

• Beispiel: Vorzeichenwechsel von 3 10 = 00011 2<br />

1. 11100 2 , 2. 11101 2 = - 3 10<br />

• Beispiel: Vorzeichenwechsel von -3 10 = 11101 2<br />

1. 00010 2 , 2. 00011 2 = 3 10<br />

32<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss |


Weitere Beispiele Zweierkomplement<br />

• Bestimme Zweierkomplement von 6 10 = 0110 2<br />

• Was ist <strong>der</strong> Dezimalwert <strong>der</strong> Zweierkomplementzahl 1001 2 ?<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 33


Weitere Beispiele Zweierkomplement<br />

• Bestimme Zweierkomplement von 6 10 = 0110 2<br />

1. 1001<br />

2. + 1<br />

1010 2 = -6 10<br />

• Was ist <strong>der</strong> Dezimalwert <strong>der</strong> Zweierkomplementzahl 1001 2 ?<br />

1. 0110<br />

2. + 1<br />

0111 2 = 7 10 , msb war vorher 1 also negativ: 1001 2 = -7 10<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 34


Addition im Zweierkomplement<br />

• Addiere 6 + (-6)<br />

+<br />

0110<br />

1010<br />

• Addiere -2 + 3<br />

+<br />

1110<br />

0011<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 35


Addition im Zweierkomplement<br />

• Addiere 6 + (-6)<br />

• Addiere -2 + 3<br />

+<br />

+<br />

111<br />

0110<br />

1010<br />

10000<br />

111<br />

1110<br />

0011<br />

10001<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 36<br />

Überlauf:<br />

Ignorieren, wenn<br />

Positive und negative<br />

Zahlen gleicher<br />

Bitbreite addiert<br />

werden


Erweitern von Zahlen auf höhere Bitbreite<br />

• Verknüpfen von Zahlen unterschiedlicher Bitbreite?<br />

• Anzahl Bits N <strong>der</strong> schmaleren Zahl erhöhen auf Breite M <strong>der</strong><br />

an<strong>der</strong>en Zahl<br />

• Zwei Möglichkeiten<br />

• Auffüllen mit führenden Nullen (zero extension)<br />

• Auffüllen mit dem bisherigen Vorzeichen (sign extension)<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 37


Erweitern durch Auffüllen mit Vorzeichenbit<br />

• Vorzeichenbit nach links kopieren bis gewünschte Breite erreicht<br />

• Zahlenwert bleibt unverän<strong>der</strong>t<br />

• Auch bei negativen Zahlen!<br />

• Beispiel 1:<br />

• 4-bit Darstellung von 3 = 0011<br />

• 8-bit aufgefüllt durch Vorzeichen: 00000011<br />

• Beispiel 2:<br />

• 4-bit Darstellung von -5 = 1011<br />

• 8-bit aufgefüllt durch Vorzeichen : 11111011<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 38


Erweitern durch Auffüllen mit Nullbits<br />

• Nullen nach links anhängen bis gewünschte Breite erreicht<br />

• Zerstört Wert von negativen Zahlen<br />

• Positive Zahlen bleiben unverän<strong>der</strong>t<br />

• Beispiel 1:<br />

• 4-bit Wert = 0011 2 = 3 10<br />

• 8-bit durch Auffüllen mit Nullbits: 00000011 = 3 10<br />

• Beispiel 2:<br />

• 4-bit Wert = 1011 = -5 10<br />

• 8-bit durch Auffüllen mit Nullbits : 00001011 = 11 10 , falsch!<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 39


Vergleich <strong>der</strong> Zahlensysteme<br />

Zahlensystem<br />

Wertebereich<br />

Vorzeichenlos [0, 2 N -1]<br />

Vorzeichen/Betrag [-(2 N-1 -1), 2 N-1 -1]<br />

Zweierkomplement [-2 N-1 , 2 N-1 -1]<br />

Beispiel 4-bit breite Darstellung:<br />

-8<br />

1000 1001<br />

-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15<br />

1111<br />

Vorzeichenlos<br />

Unsigned<br />

1010 1011 1100 1101 1110 1111 0000 0001 0010 0011 0100 0101 0110 0111 Two's Complement<br />

1110<br />

1101<br />

1100<br />

1011<br />

1010<br />

1001<br />

0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111<br />

0000 0001 0010 0011 0100 0101 0110 0111<br />

1000<br />

Zweierkomplement<br />

Sign/Magnitude<br />

Vorzeichen/Betrag<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 40


Zahlensysteme<br />

• Bisher kennengelernt<br />

• Positive Zahlen<br />

• Vorzeichenlose Binärdarstellung<br />

• Negative Zahlen<br />

• Zweierkomplement<br />

• Darstellung als Vorzeichen/Betrag<br />

• Wo bleiben Brüche?<br />

• Rationale Zahlen?<br />

• Reelle Zahlen?<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 41


Zahlen mit Bruchanteilen<br />

• Zwei gängige Darstellungen:<br />

• Festkomma (fixed-point):<br />

Position des Kommas bleibt konstant<br />

Beispiel: Dezimalsystem, 2 Vorkomma-, 3 Nachkommastellen<br />

2,000 99,999 0,000 -2,718 nicht: 3,1415 365,250<br />

• Gleitkomma (floating-point)<br />

Position des Kommas kann wan<strong>der</strong>n, ist stets rechts <strong>der</strong> höchstwertigen<br />

Stelle 0. Angabe <strong>der</strong> Position des Kommas in Exponentenschreibweise<br />

Beispiel: Dezimalsystem, insgesamt 5 Stellen<br />

2*10 0 9,9999*10 1 0*10 0 -2,718*10 0 3,1415*10 0 3,6525*10 2 5*10 6<br />

nicht: 3,14159*10 0<br />

Auch: Obergrenze für Exponenten, keine beliebig großen Zahlen darstellbar<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 42


Binäre Festkommazahlen<br />

• Darstellung von 6,75 mit 4b für ganzen Anteil und 4b für Binärbruch:<br />

01101100<br />

0110 ,1100<br />

2 2 + 2 1 + 2 -1 + 2 -2 = 6,75<br />

• Binärkomma wird nicht explizit dargestellt<br />

• Position wird durch Format impliziert (hier: 4,4)<br />

• Alle Leser und Schreiber von Festkommadaten müssen dasselbe<br />

Format verwenden<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 43


Binäre Festkommazahlen<br />

•Beispiel: Stelle 7.5 10 in 8b im 4,4-<br />

Festkommaformat dar<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 44


Binäre Festkommazahlen<br />

• Beispiel: Stelle 7.5 10 in 8b im 4,4-Festkommaformat dar<br />

01111000<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 45


Vorzeichenbehaftete Festkommazahlen<br />

• Wie bei ganzen Zahlen: Zwei Darstellungen möglich<br />

• Vorzeichen/Betrag<br />

• Zweierkomplement<br />

• Stelle -7.5 10 in 8b als 4,4-Festkommazahl dar<br />

• Vorzeichen/Betrag:<br />

• Zweierkomplement:<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 46


Vorzeichenbehaftete Festkommazahlen<br />

• Wie bei ganzen Zahlen: Zwei Darstellungen möglich<br />

• Vorzeichen/Betrag<br />

• Zweierkomplement<br />

• Stelle -7.5 10 in 8b als 4,4-Festkommazahl dar<br />

• Vorzeichen/Betrag:<br />

11111000<br />

• Zweierkomplement:<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 47


Vorzeichenbehaftete Festkommazahlen<br />

• Wie bei ganzen Zahlen: Zwei Darstellungen möglich<br />

• Vorzeichen/Betrag<br />

• Zweierkomplement<br />

• Stelle -7.5 10 in 8b als 4,4-Festkommazahl dar<br />

• Vorzeichen/Betrag:<br />

11111000<br />

• Zweierkomplement:<br />

1. +7.5: 01111000<br />

2. Invertieren: 10000111<br />

3. Addiere 1 zu lsb: + 1<br />

10001000<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 48


Binäre Gleitkommazahlen<br />

• Binärkomma liegt immer genau rechts von höchstwertiger 1<br />

• Ähnlich zur wissenschaftlichen Darstellung von Dezimalbrüchen<br />

• Beispiel: 4.387.263 in wissenschaftlicher Darstellung<br />

4,387263 × 10 6<br />

• Allgemeine Schreibweise:<br />

± M × B E<br />

wobei<br />

• M = Mantisse<br />

• B = Basis<br />

• E = Exponent<br />

• Im Beispiel: M = 4,387263 , B = 10, and E = 6<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 49


Binäre Gleitkommazahlen<br />

1 Bit 8 Bits 23 Bits<br />

Vorzeichen Exponent Mantisse<br />

• Beispiel: Stelle den Wert 228 10 als 32b-Gleitkommazahl dar<br />

• Im folgenden drei Versionen, nur die letzte davon ist eine Standarddarstellung!<br />

• IEEE 754, single precision format<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 50


Binäre Gleitkommadarstellung: 1. Versuch<br />

• Wandele Dezimalzahl in Binärdarstellung um:<br />

• 228 10 = 11100100 2 = 1,11001 × 2 7<br />

• Trage nun Daten in die Fel<strong>der</strong> des 32b Wortes ein:<br />

• Vorzeichenbit ist positiv (0)<br />

• Die 8b des Exponenten stellen den Wert 7 dar<br />

• Die verbliebenen 23 Bit stellen die Mantisse dar<br />

1 Bit 8 Bits 23 Bits<br />

0 00000111 111 0010 0000 0000 0000 0000<br />

Vorzeichen<br />

Exponent<br />

Mantisse<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 51


Binäre Gleitkommadarstellung: 2. Versuch<br />

• Beobachtung: Das erste Bit <strong>der</strong> Mantisse ist so immer 1<br />

• 228 10 = 11100100 2 = 1,11001 × 2 7<br />

• Man kann sich das explizit Abspeichern <strong>der</strong> führenden 1 sparen<br />

• Die führende 1 wird implizit immer als präsent angenommen<br />

• Stattdessen: Speichere nur den Bruchanteil (die “Nachkommastellen”)<br />

explizit ab<br />

1 Bit 8 Bits 23 Bits<br />

0 00000111 110 0100 0000 0000 0000 0000<br />

Vorzeichen<br />

Exponent<br />

Bruchanteil<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 52


Binäre Gleitkommadarstellung: 3. Versuch<br />

• Exponent kann auch negativ sein<br />

• Idee: Zweierkomplement. Wäre möglich, hat aber praktische Nachteile<br />

• Besser: Exponent relativ zu konstantem Grundwert (Exzess, Biaswert) angeben<br />

• Hier: Biaswert = 127 (01111111 2 )<br />

• Exponent mit Bias = Biaswert + Exponent<br />

• Exponent 7 wird also gespeichert als:<br />

127 + 7 = 134 = 0x10000110 2<br />

• Damit IEEE 754 32-bit Gleitkommadarstellung von 228 10<br />

1 Bit 8 Bits 23 Bits<br />

0 10000110<br />

Vorz. Exponent<br />

mit Bias<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 53<br />

110 0100 0000 0000 0000 0000<br />

Bruchanteil


Beispiel IEEE 754 Gleitkommadarstellung<br />

• Stelle -58.25 10 gemäß dem IEEE 754 32-bit Gleitkommastandard dar<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 54


Beispiel IEEE 754 Gleitkommadarstellung<br />

• Stelle -58.25 10 gemäß dem IEEE 754 32-bit Gleitkommastandard dar<br />

• 1. Wandele in Binärdarstellung um:<br />

• 58,25 10 =<br />

• 2. Trage Fel<strong>der</strong> des 32b Gleitkommawortes ein:<br />

• Vorzeichen:<br />

• 8 Bits für Exponent:<br />

• 23 Bits für Bruchanteil:<br />

1 Bit 8 Bits 23 Bits<br />

Vorz. Exponent Bruchanteil<br />

• In Hexadezimalschreibweise:<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 55


Beispiel IEEE 754 Gleitkommadarstellung<br />

• Stelle -58.25 10 gemäß dem IEEE 754 32-bit Gleitkommastandard dar<br />

• 1. Wandele in Binärdarstellung um:<br />

• 58,25 10 = 111010,01 2 = 1.1101001 × 2 5<br />

• 2. Trage Fel<strong>der</strong> des 32b Gleitkommawortes ein:<br />

• Vorzeichen: 1 (negativ)<br />

• 8 Bits für Exponent: (127 + 5) = 132 = 10000100 2<br />

• 23 Bits für Bruchanteil: 110 1001 0000 0000 0000 0000<br />

1 Bit 8 Bits 23 Bits<br />

1 100 0010 0 110 1001 0000 0000 0000 0000<br />

Vorz. Exponent Bruchanteil<br />

• In Hexadezimalschreibweise: 0xC2690000<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 56


IEEE 754 Gleitkommadarstellung: Son<strong>der</strong>fälle<br />

• Nicht alle benötigten Werte nach dem Schema darstellbar<br />

• Beispiel: 0, hat keine führende 1<br />

Wert Vorz. Exponent Bruchanteil<br />

0 X 00000000 00000000000000000000000<br />

∞ 0 11111111 00000000000000000000000<br />

- ∞ 1 11111111 00000000000000000000000<br />

NaN X 11111111 Ein Wert 0<br />

NaN steht für “Not a Number” und stellt häufig Rechenfehler dar<br />

Beispiele: √-1 o<strong>der</strong> log(-5).<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 57


Genauigkeit <strong>der</strong> Gleitkommadarstellungen<br />

• Einfache Genauigkeit (single-precision):<br />

• 32-bit Darstellung<br />

• 1 Vorzeichenbit, 8 Exponentenbits, 23 Bits für Bruchanteil<br />

• Exponentenbias = 127<br />

• Doppelte Genauigkeit (double-precision):<br />

• 64-bit Darstellung<br />

• 1 Vorzeichenbit, 11 Exponentenbits, 52 Bits für Bruchanteil<br />

• Exponentenbias = 1023<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 58


Rundungsmodi für Gleitkommazahlen<br />

• Overflow:<br />

• Un<strong>der</strong>flow:<br />

Betrag <strong>der</strong> Zahl ist zu groß, um korrekt dargestellt zu werden<br />

Zahl ist zu nah bei 0, um korrekt dargestellt zu werden<br />

• Rundungsmodi:<br />

• Abrunden zu minus Unendlich<br />

• Aufrunden zu plus Unendlich<br />

• Hin zu Null<br />

• Hin zu nächster darstellbarer Zahl<br />

• Beispiel: Runde 1,100101 (1,578125 10 ) auf 3 Bits Bruchanteil<br />

• Ab: 1,100<br />

• Auf: 1,101<br />

• Zu Null: 1,100<br />

• Zu nächster: 1,101 (1,625 liegt näher an 1,578125 als an 1,5)<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 59


Addition von Gleitkommazahlen<br />

mit gleichem Vorzeichen<br />

1. Exponenten- und Bruchanteilfel<strong>der</strong> aus Gleitkommawort extrahieren<br />

2. Bruchanteil um führende 1 erweitern, um Mantisse zu bilden<br />

3. Vergleiche Exponenten<br />

4. Schiebe Mantisse von Zahl mit kleinerem Exponenten nach rechts<br />

(bis Exponenten gleich sind)<br />

5. Addiere Mantissen<br />

6. Normalisiere Mantisse und passe Exponent an, falls nötig<br />

7. Runde Ergebnis entsprechend dem gewählten Rundungsmodus<br />

8. Baue Gleitkommawort aus Exponenten und Bruchanteil des<br />

Ergebnisses<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 60


Beispiel: Addition von Gleitkommazahlen<br />

Addiere die beiden Gleitkommazahlen<br />

0x3FC00000<br />

0x40500000<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 61


Beispiel: Addition von Gleitkommazahlen<br />

1. Extrahiere Exponenten und Bruchanteile aus 32b Worten<br />

1 Bit 8 Bits 23 Bits<br />

0 01111111 100 0000 0000 0000 0000 0000<br />

Vorz. Exponent Bruchanteil<br />

1 Bit 8 Bits 23 Bits<br />

0 10000000 101 0000 0000 0000 0000 0000<br />

Vorz. Exponent Bruchanteil<br />

S E F<br />

1. Zahl (N1): S1 = 0, E1 = 127 (= × 2 0 ), F1 = ,1<br />

2. Zahl (N2): S2 = 0, E2 = 128 (= × 2 1 ), F2 = ,101<br />

2. Erweitere Bruchanteile um führende 1, um Mantissen zu bilden<br />

M1: 1,1<br />

M2: 1,101<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 62


Beispiel: Addition von Gleitkommazahlen<br />

3. Vergleiche Exponenten<br />

E2 – E1 = 128 – 127 = 1, N1 muss also um ein Bit geschoben werden<br />

4. Mantisse von Zahl mit kleinerem Exponenten entsprechend nach rechts<br />

schieben<br />

schiebe M1: 1,1 >> 1 = 0,11 (× 2 1 )<br />

5. Mantissen addieren (haben jetzt den gleichen Exponenten)<br />

0,11 × 2 1<br />

+ 1,101 × 2 1<br />

10,011 × 2 1 63<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss |


Beispiel: Addition von Gleitkommazahlen<br />

6. Normalisiere Mantisse und passe Exponenten an, falls nötig<br />

10,011 × 2 1 = 1,0011 × 2 2<br />

7. Runde Ergebnis entsprechend Rundungsmodus<br />

Hier nicht nötig (passt in 23b)<br />

8. Baue neues Gleitkommawort für Ergebnis aus Exponent und Mantisse<br />

S = 0, E = 2 + 127 = 129 = 10000001 2 , F = 001100..<br />

1 Bit 8 Bits 23 Bits<br />

0 10000001 001 1000 0000 0000 0000 0000<br />

Vorz. Exponent Bruchanteil<br />

In Hexadezimalschreibweise: 0x40980000<br />

WS 10/11 | <strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> - <strong>Kapitel</strong> 8 - Prof. Sorin A. Huss | 64

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!