Technische Grundlagen der Informatik â Kapitel 8
Technische Grundlagen der Informatik â Kapitel 8
Technische Grundlagen der Informatik â Kapitel 8
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