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 = 1103 + 0102 + 1101 + 1100 • © Prof. Dr. Nikolaus Wulff = 11000 + 0100 + 110 + 11 = „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 = 123 + 022 + 121 + 120 = 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 = 1163 + 0162 + 1161 + 1160 © Prof. Dr. Nikolaus Wulff • = 1 4096 + 0256 + 116 + 11 • = „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 = 183 + 082 + 181 + 180 © Prof. Dr. Nikolaus Wulff • = 1512 + 064 + 18 + 11 • = „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 ba n−2 ba 2 ba1 ba 0 z=∑ • Obige Zahl z geteilt durch b ergibt • a ba n−1 n−2 ba 2 b a 1 Rest a 0 • ≡ z • weitere Division von z mit b ergibt • a n−1 ba n−2 bba 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 x1=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 y1 x y 1 Informatik I 19 Beispiel: Binäre Subtraktion 4−6=4−6=461 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=⋯0001120.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=m1 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 | ≤ 410-3, 210-4 und 110-5 und für m=23 und 52 |x| ≤ 110-7 und 210-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