2 - Lab4Inf

Werbung
Einführung in die
Informatik I
Das Rechnen in Zahlensystemen zur Basis b=2, 8, 10 und 16
Prof. Dr. Nikolaus Wulff
Zahlensysteme
• Neben dem üblichen dezimalen Zahlensystem zur
Basis 10 sind in der Informatik Systeme zur Basis 2, 8
und 16 gebräuchlich.
• Zahlen werden gebildet aus den einzelnen Ziffern
(Symbolen) eines Alphabets ∑.
• Die Anzahl |∑| der Elemente des Alphabets entspricht
der jeweiligen Basis b.
• Die mit Hilfe dieser Symbole bildbaren Wörter w ∈∑*
werden mit dem Stellenwertverfahren des Zahlensystems auf die natürlichen Zahlen ℕ abgebildet.
• Dasselbe Symbol a∈∑ hat verschiedene Bedeutung.
© Prof. Dr. Nikolaus Wulff
Informatik I
2
Zahlendarstellung
• Zahlen sind Wörter (an-1an-2...a0)b ∈ ∑* gebildet aus
den b verschiedenen Zeichen des Alphabets ∑.
• Zur Schreibweise gehört eine Interpretation innerhalb
eines Stellenwertsystems zur Basis b:
Darstellung einer vorzeichenlosen Ganzzahl zur Basis b
n−1
j
a n−1 a n−2 a 1 a 0 b =∑ j=0 a j b und 0≤a j b
– Achtung:
– Das Symbol ∑ wird auf der Folie in zwei Bedeutungen verwendet:
1) Der griechischer Buchstabe ∑ (Sigma) als Abkürzung für das
Alphabet, bzw. ∑* zur Kennzeichnung aller Wörter des
Alphabets.
2) Als mathematisches Zeichen für die Summation.
© Prof. Dr. Nikolaus Wulff
Informatik I
3
Dezimalsystem
• Basis b=10
Benutze Symbole/Ziffern ∑ = {0,1,2,3,4,5,6,7,8,9}
• Interpretation:
n−1
a n−1 a n−2 a 1 a 0 10=∑ j=0 a j 10
j
• Beispiel:
– (1011)10 = 1103 + 0102 + 1101 + 1100
•
© Prof. Dr. Nikolaus Wulff
= 11000 + 0100 + 110 + 11 = „eintausendelf“
Informatik I
4
Binärsystem
• Basis b=2
Benutze Symbole/Ziffern ∑ = {0,1}
• Interpretation:
n−1
a n−1 a n−2 a 1 a 0 2=∑ j=0 a j 2
j
• Beispiel:
– (1011)2 = 123 + 022 + 121 + 120 = 8 + 2 + 1= „elf“
© Prof. Dr. Nikolaus Wulff
Informatik I
5
Hexadezimalsystem
• Basis b=16
Symbole ∑ = {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}
• Interpretation:
n−1
a n−1 a n−2 a 1 a 0 16=∑ j=0 a j 16
j
• Beispiel:
– (1011)16 = 1163 + 0162 + 1161 + 1160
© Prof. Dr. Nikolaus Wulff
•
= 1 4096 + 0256 + 116 + 11
•
= „viertausendeinhundertdreizehn“
Informatik I
6
Oktalsystem
• Basis b=8
Symbole ∑ = {0,1,2,3,4,5,6,7}
• Interpretation:
n−1
a n−1 a n−2 a 1 a 0 8 =∑ j=0 a j 8
j
• Beispiel:
– (1011)8 = 183 + 082 + 181 + 180
© Prof. Dr. Nikolaus Wulff
•
= 1512 + 064 + 18 + 11
•
= „fünfhunderteinundzwanzig“
Informatik I
7
Rechnen im Stellenwertsystem
• Die Addition erfolgt ähnlich zum gewohnten
Schulrechnen zur Basis 10:
3423
+ 5678
1 1 1
9101
• Der „Überlauf“ passiert nicht bei der Zehn sondern
der jeweilige Basis b:
01012
+ 00112
34238
+ 56768
346416
+ D6D616
10002
113218
10B3A16
1 1 1
© Prof. Dr. Nikolaus Wulff
1 1 1 1
Informatik I
1
1
8
Basiswechsel
• Offensichtlich sind neben der Basis 2, 8, 10 und 16
beliebig viele verschiedene Zahlensysteme möglich.
• Zahlen dürfen nicht einfach blind miteinander verglichen oder verarbeitet werden, wenn sie in unterschiedlichen Basen repräsentiert werden.
• Es ist daher wichtig geeignete Vorschriften zur
Umrechnung von einer Basis p zur Basis q zu haben.
• Eine solche eindeutige Rechenvorschrift wird auch
Algorithmus genannt.
• Algorithmen können von Hand – oder besser noch
vom Computer – abgearbeitet/ausgeführt werden.
© Prof. Dr. Nikolaus Wulff
Informatik I
9
Basiswechsel bei b=2k
• Soll zwischen den Basen 2, 8, 16 umgerechnet
werden, so bietet die Darstellung b=2k ein einfaches
Verfahren mit Hilfe der Gruppierung nach 3 und 4
Bitfeldern an:
•
•
146110 = ...0101101101012
• 3 Bit bilden eine Oktalzahl
010 110 110 101
(2
6
6
5 )8
•
• Ein Nibbel bildet eine Hexzahl 0101 1011 0101
(5
B
5 )16
5B516 = 146110 = 26658 = 00000101101101012
© Prof. Dr. Nikolaus Wulff
Informatik I
10
Modulo-Division
• Dividiert man eine natürliche Zahl z ∈ℕ durch eine
andere natürliche Zahl d ≠0 so ergibt sich ein
Quotient q und ein Rest r.
z =q×d  r ⇒ z /d =q Rest r
• Diese Art der Modulo-Division mit Rest wird in der
Informatik mit mod bezeichnet, um sie von der
gewöhnlichen Division div zu unterscheiden.
• Die Menge ℕ wird bei der Division nicht verlassen.
Es gilt z. B. 9 div 3 = 3 jedoch 7 div 3 = 2, da 2.333...
keine natürliche Zahl ist. ( 2. 333∈ℚ⊂ℝ≠ℕ )
• Es gilt die Beziehung: z = (z div d)*d + (z mod d)
© Prof. Dr. Nikolaus Wulff
Informatik I
11
Hornerschema
• Basiswechsel lassen sich effizient bestimmen mit der
Darstellung nach dem Hornerschema zur Basis b:
–n−1
j
a
b
–j=0 j =a n−1 ba n−2 ba 2 ba1 ba 0
z=∑
• Obige Zahl z geteilt durch b ergibt
•
a
ba
n−1
n−2 ba 2 b a 1 Rest a 0

•
≡ z
• weitere Division von z mit b ergibt
•
a n−1 ba
n−2 bba 2
•
Rest a 1
• d.h. jede weitere Division liefert eine weitere Ziffer
der Darstellung zur Basis b, bis der Quotient Null ist.
© Prof. Dr. Nikolaus Wulff
Informatik I
12
Divisionsalgorithmus
1. Teile die Zahl z durch die Basis b und ermittele den
Quotienten q und den Rest r.
2. Ist der Quotient q≠0 setze z=q und fahre fort mit 1.
3. Die einzelnen Reste rk von rückwärts gelesen sind
die Repräsentation von z= (rnrn-1...r0)b in der Basis b.
436110:8=545
54510:8= 68
6810:8= 8
810:8= 1
110:8= 0
© Prof. Dr. Nikolaus Wulff
+
+
+
+
+
Rest
Rest
Rest
Rest
Rest
1
1
4
0
1
436110:16=272
27210:16= 17
1710:16= 1
110:16= 0
+
+
+
+
Rest
Rest
Rest
Rest
436110 = 104118 = 110916
Informatik I
13
9
0
1
1
Umrechnung von b=10 nach b=2k
• Zur Umrechnung einer Zahl z im Zehnersystem zur
Basis 2 empfiehlt es sich diese zunächst in das
Oktalsystem zu überführen (8 liegt dicht an 10) und
dann jedes Oktalsymbol als 3-Bitzahl zu schreiben:
z = 436110 = 104118
siehe vorhergehende Folie
1
0
4
1
18
001 000 100 001 001
z = 00010001000010012 in 16 Bit Darstellung
© Prof. Dr. Nikolaus Wulff
Informatik I
14
Vorzeichenbehaftete Ganzzahlen
• Bis lang wurden nur natürliche Zahlen z∈ℕ betrachtet, um auch negative Zahlen z∈ℤ darzustellen wird
das höchste Bit v als Vorzeichenbit interpretiert:
Darstellung einer Ganzzahl zur Basis 2
(v a n−2 a n−3 …a 1 a 0 )2
• Da ein Bit für das Vorzeichen verwendet wird gibt es
– bei gleicher Bitlänge –, nur noch halb so viele
positive Zahlen, im Vergleich zur Repräsentation ohne
Vorzeichen.
© Prof. Dr. Nikolaus Wulff
Informatik I
15
Zweierkomplement
• Die Darstellung negativer Zahlen sind allerdings
nicht im Stellenwertsystem codiert!
• Die naive Verallgemeinerung der Codierung ist falsch:
v
n−2
j
(v a n−2 a n−3 …a 1 a 0 )2≠(−1) ∑ j=0 a j 2
• Es gäbe zwar gleich viele positive wie negative
möglich darstellbare Zahlen, hätte aber zur Folge,
dass es eine positive und eine negative Null gibt.
• Es wird daher eine unsymmetrische Codierung
gewählt, das Zweierkomplement, es entsteht durch
Invertierung aller Bit und Addition von Eins.
© Prof. Dr. Nikolaus Wulff
Informatik I
16
Darstellung im Zweierkomplement
Bitfolge
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
© Prof. Dr. Nikolaus Wulff
mögliche Interpretationen
unsigned
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
positiv
negativ
Informatik I
0
1
2
3
4
5
6
7
-0
-1
-2
-3
-4
-5
-6
-7
0
1
2
3
4
5
6
7
-1
-2
-3
-4
-5
-6
-7
-8
0
1
2
3
4
5
6
7
-7
-6
-5
-4
-3
-2
-1
-0
0
1
2
3
4
5
6
7
-8
-7
-6
-5
-4
-3
-2
-1
17
Invertierung einer Binärzahl
• Eine Binärzahl wird invertiert, indem alle Nullen
durch Einsen und alle Einsen durch Nullen ersetzt
werden.
n−1
n−1
x=∑ j=0 a j 2 ⇒ x=∑ j=0 1−a j  2
j
j
• Diese Invertierungsoperation lässt sich einfach in
der Hardware einer CPU realisieren.
x=0000⇒ x =1111
x=0100⇒ x =1011
x=0101 ⇒ x=1010
© Prof. Dr. Nikolaus Wulff
Informatik I
18
Negative Binärzahlen
• Der Vorteil der Zweierkomplementdarstellung ist die
einfache Berechenbarkeit durch Invertierung der
Bitfolge und anschließende Addition von 1.
–
– −x= x 1
–
x=0100 ⇒ x =1011
x1=1100≡−x
• Die Subtraktion zweier Zahlen lässt sich somit im
Binärsystem auf einfache Addition zurückführen.
x− y
© Prof. Dr. Nikolaus Wulff
=
=
=
x− y
x y1
 x y 1
Informatik I
19
Beispiel: Binäre Subtraktion
4−6=4−6=461
410 =0100 2
610=0110 2 ⇒ 610 =10012 −610 =1010 2
Rechnung:
01002
+ 10012
11012
+
12
11102
Ergebnis:
11102=−210=4 10 −6 10
© Prof. Dr. Nikolaus Wulff
Informatik I
oder
01002
+ 10102
11102
20
Gleitkommazahlen
• Mit Hilfe der Zweierkomplementdarstellung ist es
möglich negative und positive Ganzzahlen x ∈ℤ
darzustellen. Gebrochene oder irrationale Zahlen
lassen sich jedoch so nicht darstellen.
• Insbesondere gehen bei der Division zweier
Ganzzahlen die Nachkommastellen verloren!
– Gleitkommaarithmetik: 19/10 = 1.9
– ganzahlige Arithmetik: 19/10 = 1.(9) = 1
• 19/10 liefert 1 Rest 9 und die 9 wird nicht berücksichtigt!
• Um den Zahlenbereich von ℤ auf ℝ auszudehnen
sind Nachkommastellen erforderlich.
© Prof. Dr. Nikolaus Wulff
Informatik I
21
Idee der Gleitkommazahlen
• Darstellung von Gleitkommazahlen im
Zehnersystem:
n−1
v
j
v a– n−1 a 0 , a−1 a−m 10 =−1 ∑ j=−m a j 10
•
1
0
−1
−2
−3
34.567=3⋅10
4⋅10 5⋅10 6⋅10 7⋅10
•
• Die Kommastelle lässt sich „Durchschieben“:
1
2
−3
34.567=3.4567×10 =0.34567×10 =34567×10
• 34.567 lässt sich zur Basis 10 darstellen als die
Ganzzahl 34567 mit dem negativen Exponenten -3
oder als 0.34567 mit Exponent 2 („Normalform“).
v
v e a−1 a−m 10 =−1 10
e
m
−j
a
10
∑ j=1 j
(Vorzeichen, Exponent, Mantisse)
© Prof. Dr. Nikolaus Wulff
Informatik I
22
Gleitpunktzahlen
• Gleitpunkzahlen werden zur Basis 2 dargestellt als:
(v e
•
v e
a−1•…a−m )2=(−1) 2
m
−j
∑ j=1 a j 2
• Gleitpunktzahlen werden als 4-Byte (einfache) oder
8-Byte Zahlen (doppelte Genauigkeit) codiert.
• Format nach Standard IEEE 754-1985:
...
(Vorzeichen, Exponent, Mantisse)
4 Byte: 1-Bit,
8-Bit, 23-Bit -127 ≤ e ≤ 128
Bereich
10-38 ≤ f ≤ 1038
8 Byte: 1-Bit, 11-Bit, 52-Bit -1023 ≤ e ≤ 1024 10-308 ≤ d ≤ 10308
Beim Exponent ebias wird fest als bias 127 bzw. 1024 zu e hinzugerechnet, so dass
ebias intern als vorzeichenlose Ganzzahl verarbeitet wird und es gibt ein Hidden Bit.
© Prof. Dr. Nikolaus Wulff
Informatik I
23
Prinzip der Gleitpunktzahl
• Die Koeffizienten aj ergeben sich ähnlich den
Ganzzahlen mit sukzessiver Multiplikation mit 2j
3.62510=310 0.62510=⋯0001120.62510
0.625 10
0.2510
0.510
×2
×2
×2
=
=
=
1.2510
0.510
1.0 10
0.62510=0.1012
Probe: 2-1 +2-3 =0.625
3.62510 =⋯00011.101 2
• Durchschieben des Binärpunkts
2
3.62510 =⋯00011.101 2=0.11101 2×2
0 0 0 0 0 0 0 1 0 0 0 ... 1 1 1 0 1
© Prof. Dr. Nikolaus Wulff
Informatik I
Achtung:
Dies ist
nicht das
IEEE Format!
24
IEEE754-Gleitpunktzahl
• Im IEEE Format wird das erste signifikante Bit der
Mantisse eingespart, um einen Faktor 2 im möglichen Zahlenbereich zu gewinnen das Hidden Bit.
3.62510=⋯00011.1012 =1.11012 ×21
• Die erste 1 der Mantisse vor dem Komma wird
nicht abgespeichert und der Exponent um den Bias
127 verschoben (=> vorzeichenloser Exponent):
3.62510=⋯00011.1012 =+1.11012 ×21
1
(128−127)
2 =2
12810 =10000000 2
0 1 0 0 0 0 0 0 0 0 0 ... 0 1 1 0 1 IEEE754
© Prof. Dr. Nikolaus Wulff
Informatik I
25
Darstellungsfehler
• Nicht alle Zahlen lassen sich exakt zu beliebiger
Basis b darstellen und es kommt daher zu Fehlern.
∞
∞
1/ 3 = 0.13 ≃0.3333⋯310 ≃0.0101010101⋯012
∞
∞
2/3 = 0.23 ≃0.6666⋯610 ≃0.1010101010⋯102
∞
1/10 = 0.110 ≃0.00011⋯0011 2
∞
1/5 = 0.210 ≃0.0011⋯0011 2
Probe:
Achtung 3-Bit gehören
in den Exponenten
Fehler
2.3 10-3 8-Bit
1.4 10-4 12-Bit
0.110 ≃0.00011001 2=0.0976562510
0.110 ≃0.000110011001 2=0.09985...10
0.110 ≃0.0001100110011001 2=0.0999908...10
© Prof. Dr. Nikolaus Wulff
Informatik I
26
Fehlerabschätzung
• Mit der Darstellung x= x̃ +δ x
–
v
x=−1 2
e
∞
−j
∑ j =1 a j 2
• v e
x=−1
• 2 
m
∞
−j
−j
∑ j=1 a j 2 ∑ j=m1 a j 2 
• lässt sich der Quantisierungsfehler abschätzen zu:
v e
–
δ x =(−1) 2
–
∞
e
∣δ x–∣=2
∞
∑ j=m+1 a j 2
−j
∑ j=m+1 a j 2
−j
≤2
e
∞
∑ j=m+1 2
−j
=2
e−m
• Für e=0 ergibt sich für m=8, 12 und 16 die
Abschätzung |x | ≤ 410-3, 210-4 und 110-5 und
für m=23 und 52 |x| ≤ 110-7 und 210-16.
© Prof. Dr. Nikolaus Wulff
Informatik I
27
Zusammenfassung
• Darstellung natürliche Zahlen zu beliebiger Basis b.
• Übliche Zahlensysteme sind Binär-, Oktal- und
Hexadezimal- sowie die bekannten Dezimalzahlen.
• Negative Zahlen erfordern ein Vorzeichenbit und
werden durch die Zweikomplementdarstellung
repräsentiert.
• Gleitpunktzahlen werden zur Basis 2 dargestellt mit
Angabe von Vorzeichen, Exponent und Mantisse.
• Nicht alle Gleitpunktzahlen lassen sich zur Basis 2
exakt genau darstellen.
– Z.B. alle Zahlen 1/p mit p Primzahl>2.
© Prof. Dr. Nikolaus Wulff
Informatik I
28
Herunterladen