3. Mai 2005 Uni Regensburg, RZ, Braun Datei: C: D DOKU KURSE STWRTS.TEX \ \ \ \ 1. Stellenwertsysteme Wir schreiben Zahlen – ähnlich wie Mayas und Babylonier, anders als Römer und Griechen – in einem sogenannten Stellenwertsystem. Stellenwertsysteme haben deutliche Vorteile beim Manipulieren von Zahlen1 und haben sich deshalb durchgesetzt. Jede Zahl x kann mit einer endlichen Menge von Symbolen ai geschrieben werden2 und wird auf eine festgelegte Basis b bezogen. Es gilt: x = . . . a2 a1 a0 .a−1 a−2 a−3 . . . = . . .+a2 ·b2 +a1 ·b1 +a0 ·b0 +a−1 ·b−1 +a−2 ·b−2 +a−3 ·b−3 +. . . Derzeit sind im Alltag das Dezimalsystem mit der Basis b = 10 und in der EDV das Dualsystem (b = 2), das Oktalsystem (b = 8) und das Sedezimalsystem (b = 16) in Gebrauch. Das Sedezimalsystem wird auch als Hexadezimalsystem bezeichnet. Weiter hat sich für bestimmte Größen3 das aus Babylonien stammende Sexagesimalsystem (b = 60) bis in unsere Zeit erhalten. Keilschrifttafeln belegen, daß dieses System bereits 1750 vor Christus entwickelt war und sogar schon von der Gleitpunktschreibweise Gebrauch gemacht hat. Sprachlich existieren noch Relikte eines Duodezimalsystems (b = 12) und eines Vigesimalsystems (b = 20) wenn von Dutzend oder in Frankreich von quatre-vingt die Rede ist. Ist ab jetzt die Basis unklar, so wird sie tiefgestellt als Dezimalzahl an die Zahl angehängt. Für ein Zahlensystem mit der Basis b benötigt man b Ziffern von 0 bis b − 1. Ist b ≤ 10, so verwendet man einfach einen Teil der vertrauten Dezimalziffern in der üblichen Bedeutung. Oktalzahlen mit b = 8 schreibt man also mit den Ziffern 0, 1, 2, 3, 4, 5, 6 und 7. Für b = 2 hat sich gelegentlich statt der Ziffern 0 und 1 die Schreibweise mit O und L eingebürgert, die hier nicht verwendet wird. Ist b ≤ 16, so verwendet man die Dezimalziffern und die ersten 6 Buchstaben des Alphabets. Die Ziffern haben dabei die übliche Bedeutung, die Buchstaben haben die Werte von 10 bis 15: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A = 10, B = 11, C = 12, D = 13, E = 14, F = 15. Diese Methode könnte bis maximal bis Basen b ≤ 36 ausgedehnt werden, was platzsparend wäre, aber unüblich ist. Für alle anderen Basen wird eine bereits in Babylonien auf Keilschrifttafeln gebräuchliche Methode verwendet: Die Ziffern werden im Dezimalsystem geschrieben und durch Komma getrennt. Das Komma zwischen ganzzahligem und gebrochenen Teil wird dann als Semikolon geschrieben. Als Kuriosität sei noch erwähnt, daß mathematisch auch völlig andersgeartete Basen möglich sind. Negadezimalzahlen verwenden b = −10 und die üblichen 10 Ziffern, Quaterimaginärzahlen arbeiten mit b = 2i und den Ziffern 0, 1, 2 und3. In einem Zahlensystem mit √ der Basis b = 2 i und den Ziffern 0 und 1 hat schon die Zahl i eine unendlich lange, nichtperiodische Darstellung! Weitere Beispiele finden sich bei D. E. Knuth: The Art of Computer Programming, Vol. 2 Seminumerical Algorithms, Seite 166. Beispiele: 1738 = 1 · 103 + 7 · 102 + 3 · 101 + 8 · 100 = 1 · 1000 + 7 · 100 + 3 · 10 + 8 1010012 = 1 · 25 + 0 · 24 + 1 · 23 + 0 · 22 + 0 · 21 + 1 · 20 = 1 · 32 + 0 · 16 + 1 · 8 + 0 · 4 + 0 · 2 + 1 = 41 1 Schreiben, Sortieren, Vergleichen, Rechnen 2 zum Vergleich: das römische Zahlsystem geht entweder nur bis 5000 oder benötigt eine unendliche Symbolmenge 3 Winkel in Grad, Minuten und Sekunden, Zeit in Stunden, Minuten und Sekunden 1. Stellenwertsysteme 2 628 = 6 · 81 + 2 · 80 = 6 · 8 + 2 = 50 1AB216 = 1 · 163 + A · 162 + B · 161 + 2 · 160 = 1 · 4096 + 10 · 256 + 11 · 16 + 2 = 6834 J1A20 = J · 202 + 1 · 201 + A · 200 = 19 · 400 + 1 · 20 + 10 = 7630 Y 5A35 = Y · 352 + 5 · 351 + A · 350 = 34 · 1225 + 5 · 35 + 10 = 41835 10110.11012 = 1 · 24 + 0 · 23 + 1 · 22 + 1 · 21 + 0 · 20 + 1 · 2−1 + 1 · 2−2 + 0 · 2−3 + 1 · 2−4 = = 1 · 16 + 0 · 8 + 1 · 4 + 1 · 2 + 0 + 1 · 173.658 = 1 · 82 +7· 1AB.E9B16 = 1 · 81 162 80 +6· 8−1 161 +B· 160 +3· +A· +1· 1 2 +5· 8−2 +E· 1 4 +0· 1 8 +1· 1 16 = 22.81250 = 1 · 64 + 7 · 8 + 3 + 6 · 16−1 +9· 16−2 +B· 16−3 +5· 1 8 1 64 = 123.82813 = = 1 · 256 + 10 · 16 + 11 + 14 · 59, 2, 23; 49, 9, 2260 = 59 · 602 + 2 · 1 1 1 + 9 · 256 + 11 · 4096 = 427.91283 16 1 0 −1 60 + 23 · 60 + 49 · 60 + 9 · 60−2 + 22 = 59 · 3600 + 2 · 60 + 23 + 49 · 1 60 +9· 1 3600 + 22 · 1 216000 · 60−3 = = 212543.81926851 2. Umwandlung von Zahldarstellungen Für Basen b1 , b2 ∈ IN, b1 , b2 ≥ 2 müssen in der Basis b1 dargestellte Zahlen gelegentlich in die Darstellung zur Basis b2 umgewandelt werden. Dabei ist die Rechenbasis zu berücksichtigen: Erfolgt die Rechnung mit Zahlen zur Basis b1 oder b2 ?4 Von Hand rechnet man meist im Dezimalsystem, der Computer verwendet sein internes System, meist das Dualsystem. Schließlich ist zu unterscheiden, ob ganze Zahlen oder Brüche zu konvertieren sind. 2.1. Rechnung in der Basis b2 Es genügt, einfach die Definition von Stellenwertzahlen zu verwenden. Beispiel zur Umrechnung finden sich in den allgemeinen Beispielen des letzten Abschnitts. 2.2. Umwandlung von ganzen Zahlen durch Rechnung in der Basis b1 Die Umwandlung erfolgt durch fortgesetzte ganzzahlige Division durch die Basis b2 mit Rest, bis der Dividend 0 wird. Alle Reste beginnend beim letzten (also von unten her gelesen!) ergeben die Ziffern der Zahl zur Basis b2 . Beispiele: 1. Darstellung von 50 (Dezimalsystem, b1 = 10) im Oktalsystem (b2 = 8) durch Dezimalrechnung: 50/8 = 6 Rest 2 6/8 = 0 Rest 6 Die Reste 6 und 2 (von hinten her gelesen) ergeben die Oktaldarstellung 628 . 2. Darstellung von 6834 (Dezimalsystem, b1 = 10) im Sedezimalsystem (b2 = 16) durch Dezimalrechnung: 6834/16 = 427 Rest 2 427/16 = 26 Rest 11 26/16 = 1 Rest 10 1/16 = 0 Rest 1 Die Reste 1, 10, 11 und 2 (von hinten her gelesen) ergeben die Sedezimaldarstellung 1AB216 . 3. Darstellung von 7630 (Dezimalsystem, b1 = 10) im Vigesimalsystem (b2 = 20) durch Dezimalrechnung: 7630/20 = 381 Rest 10 381/20 = 19 Rest 1 19/20 = 0 Rest 19 Die Reste 19, 1 und 10 (von hinten her gelesen) ergeben die Vigesimaldarstellung 19, 1, 10;20 = J1A20 . 4 Mit einer dritten Basis b3 zum Rechnen muß man zweimal wandeln: b1 → b3 → b2 2.2. Umwandlung von ganzen Zahlen durch Rechnung in der Basis b1 3 4. Darstellung von I4AB19 (b1 = 19) im Dezimalsystem (b2 = 10) durch Rechnung zur Basis 19: I4AB/A = 1F C8 Rest 7 1F C8/A = 38G Rest 0 38G/A = 6B Rest 1 6B/A = C Rest 5 C/A = 1 Rest 2 1/A = 0 Rest 1 Die Reste 1, 2, 5, 1, 0 und 7 (von hinten her gelesen) ergeben die Dezimaldarstellung 125107. Mit der Methode von 2.1. erhält man dieses Ergebnis auch einfacher: i4ab19 = i · 193 + 4 · 192 + a · 191 + b · 190 = 18 · 6859 + 4 · 361 + 10 · 19 + 11 = 125107 Zur Rechnung wird das kleine 19er-Einmaleins 1 02 03 04 05 06 07 2 04 06 08 0A 0C 0E 3 06 09 0C 0F 0I 12 4 08 0C 0G 11 15 19 5 0A 0F 11 16 1B 1G 6 0C 0I 15 1B 1H 24 7 0E 12 19 1G 24 2B 8 0G 15 1D 22 2A 2I 9 0I 18 1H 27 2G 36 A 11 1B 22 2C 33 3D B 13 1E 26 2H 39 41 C 15 1H 2A 33 3F 48 D 17 21 2E 38 42 4F E 19 24 2I 3D 48 53 F 1B 27 33 3I 4E 5A G 1D 2A 37 44 51 5H H 1F 2D 3B 49 57 65 I 1H 2G 3F 4E 5D 6C mit 192 = 361 08 09 0A 0G 0I 11 15 18 1B 1D 1H 22 22 27 2C 2A 2G 33 2I 36 3D 37 3F 44 3F 45 4E 44 4E 55 4C 54 5F 51 5D 66 59 63 6G 5H 6C 77 66 72 7H 6E 7B 88 73 81 8I 7B 8A 99 Einträgen 0B 0C 13 15 1E 1H 26 2A 2H 33 39 3F 41 48 4C 51 54 5D 5F 66 67 6I 6I 7B 7A 84 82 8G 8D 99 95 A2 9G AE A8 B7 benötigt: 0D 0E 17 19 21 24 2E 2I 38 3D 42 48 4F 53 59 5H 63 6C 6G 77 7A 82 84 8G 8H 9B 9B A6 A5 B1 AI BF BC CA C6 D5 0F 1B 27 33 3I 4E 5A 66 72 7H 8D 99 A5 B1 BG CC D8 E4 0G 1D 2A 37 44 51 5H 6E 7B 88 95 A2 AI BF CC D9 E6 F3 0H 1F 2D 3B 49 57 65 73 81 8I 9G AE BC CA D8 E6 F4 G2 0I 1H 2G 3F 4E 5D 6C 7B 8A 99 A8 B7 C6 D5 E4 F3 G2 H1 Als Beispiel sei die erste Division I4AB/A = 1F C8 Rest 7 vorgerechnet: I 4 A B : A = 1 F C 8 − A I/A=1 Rest 8 84/A=F Rest 6 8 4 6A/A=C Rest 4 − 7 H 4B/A=8 Rest 7 − 6 6 A 6 − 4 4 B 4 7 Es versteht sich von selbst, daß das letzte Beispiel nur theoretischen Wert und kaum andere Nutzanwendung hat. 2.3. Umwandlung von echten Brüchen durch Rechnung in der Basis b1 Die Umwandlung von echten Brüchen zwischen 0 und 1 erfolgt durch fortgesetzte Multiplikation mit der Basis b2 . Nach jeder Multiplikation ergibt der ganzzahlige Teil des Produktes eine neue Ziffer, die vor der nächsten Multiplikation abgezogen werden muß. Die Umwandlung endet mit dem exakten Ergebnis, wenn die mit b2 zu multiplizierende Zahl Null wird; sie endet mit einem unendlich langen, periodischen Ergebnis, wenn sich die mit b2 zu multiplizierende Zahl wiederholt, oder sie endet durch Abbruch, wenn genügend viele Stellen berechnet wurden. Beispiele: 1. Darstellung von 0, 14159 (Dezimalsystem, b1 = 10) im Sexagesimalsystem (b2 = 60) 0.14159 · 60 = 8.49540 2.3. Umwandlung von echten Brüchen durch Rechnung in der Basis b1 4 0.49540 · 60 = 29.72400 0.72400 · 60 = 43.44000 0.44000 · 60 = 26.40000 0.40000 · 60 = 24.00000 Die Ziffern ergeben sich aus den ganzzahligen Anteilen 0, 14159 = 0; 8, 29, 43, 26, 2460 2. Darstellung von 0, 14159 (Dezimalsystem, b1 = 10) im Dualsystem (b2 = 2) 0.14159 · 2 = 0.28318 0.28318 · 2 = 0.56636 0.56636 · 2 = 1.13272 0.13272 · 2 = 0.26544 0.26544 · 2 = 0.53088 0.53088 · 2 = 1.06176 0.06176 · 2 = 0.12352 0.12352 · 2 = 0.24704 0.24704 · 2 = 0.49408 0.49408 · 2 = 0.98816 Die Ziffern ergeben sich aus den ganzzahligen Anteilen 0, 14159 = 0, 001001000 . . .2 3. Darstellung von 0, 14159 (Dezimalsystem, b1 = 10) im Oktalsystem (b2 = 8) 0.14159 · 8 = 1.13272 0.13272 · 8 = 1.06176 0.06176 · 8 = 0.49408 0.49408 · 8 = 3.95264 0.95264 · 8 = 7.62112 0.62112 · 8 = 4.96896 Die Ziffern ergeben sich aus den ganzzahligen Anteilen 0, 14159 = 0, 1103747600 . . .8 4. Darstellung von 0, 14159 (Dezimalsystem, b1 = 10) im Sedezimalsystem (b2 = 16) 0.14159 · 16 = 2.26544 0.26544 · 16 = 4.24704 0.24704 · 16 = 3.95264 0.95264 · 16 = 15.24224 Die Ziffern ergeben sich aus den ganzzahligen Anteilen 0, 14159 = 0, 243F 3E037 . . .16 2.4. Umwandlung von Zahlen zwischen verwandten Basen Als verwandt werden Basen bezeichnet, die Potenzen voneinander oder gemeinsame Potenzen einer kleineren Zahl sind. Beispiele: b1 = 10, b2 = 100 = 102 ; b1 = 2, b2 = 16 = 24 ; b1 = 8 = 23 , b2 = 16 = 24 . Zwischen so verwandten Basen kann die Umwandlung ohne Rechnung ziffernweise durchgeführt werden. Man benötigt lediglich eine kurze Tabelle für die Ziffernübertragungen. Das ist auch der Grund für die häufige Benutzung der Basen 8 und 16 statt der Basis 2 in der Datenverarbeitung. Beispiel: Darstellung von 163578 (Oktalsystem, b1 = 8 = 23 ) im Sedezimalsystem (b2 = 16 = 24 ) 16357, 268 = 001 110 011 101 111, 010 1102 = 001 1100 1110 1111, 0101 102 = 1CEF, 5816