Andere ZahlensystemeUmrechnung bei periodischen BrüchenGanz so einfach wie oben gezeigt, ist es oft leider nicht. Denn so wie sich im Dezimalsystem Brüche wie '1/7' oder '1/3' nicht bis zur letzten Stelle hinschreiben lassen, sind es im Binär- und Hexadezimalen Zahlensystem so 'einfache' Quotienten wie '1/5' oder '1/10', die Schwierigkeiten bereiten. '1/7' macht im Dezimalsystem Schwierigkeiten, weil '7' kein Primfaktor der Zahlenbasis '10' ist. Im Dezimalsytem ergeben nur solche Brüche eine nicht-periodische Zahl, die einen Nenner haben, der sich nur aus den Primfaktoren '2' und '5' zusammensetzt. '2' und '5' sind nämlich die Primfaktoren der Zahlenbasis '10' des Dezimalsystems. Der Grund ist, dass sich nur solche Brüche so erweitern lassen, dass der Nenner zum Andere Zahlensysteme: StellenwerteStellenwert einer Dezimalstelle wird: 1234 1234 5* 5* 1234 30850 ---- = ------------- = ------------------- = ------- 400 2*2* 2*5* 2*5 2*5* 2*5* 2*5* 2*5* 10000 30000 0000 800 50 0 = ------- + ------- + ------- + ------- + ------- 10000 10000 10000 10000 10000 3 0 8 5 0 = --- + ---- + ----- + ------ + ------- = 3,0850 1 10 100 1000 10000 Enthält der Nenner noch einen anderen Primfaktor, lässt sich der Schritt in der ersten Zeile der Abbildung nicht durchführen. Das erklärt auch, wieso '1/5' zu einer periodischen Binär- oder hexadezimalen Zahl wird: Diese beiden System haben die Zahlenbasis '2' und '16'. Beide Basen enthalten nur den Primfakor '2', nicht aber '5'! Die Basis '10' des Dezimalsystems umfasst alle Primfaktoren von '2' und '16'. Deshalb lassen sich alle nicht-periodischen Binär- und Hexzahlen auch als nicht-periodische Dezimalzahlen ausdrücken. nicht-periodisch (dez) -> periodisch (bin, hex)In der Gegenrichtung gilt dieser Schluss aber nicht, wie gerade gezeigt wurde. Als Beispiel soll deshalb jetzt der Bruch '1/5' in's Binär- und Hexsystem gewandelt werden: 1/5 = (0,2)10 = (?)2 0,2 / 2 = 0,??? Rest: 0,2 - 0*2 = 0,2 0,2 / 1 = 0,??? Rest: 0,2 - 0*1 = 0,2 +--> 0,2 * 2 = 0,4 Rest: 0,4 | 0,4 * 2 = 0,8 Rest: 0,8 | 0,8 * 2 = 1,6 Rest: 0,6 | 0,6 * 2 = 1,2 Rest: 0,2 +--> 0,2 | ____ | +------> (00,0011001100110011...)2 = (0,0011)2 | +---- Periodizität erkennbar Perioden (wiederholte Ziffernteile) erkennt man, wenn bei den Nachkommastellen ein Rest auftritt, der identisch mit einem bereits früher bei einer Nachkommastelle behandelten Rest ist. Da bei der Methode, die bei den Nachkommastellen angewandt wurde (Links-Schieben der Ziffern im Zielsystem = Rechnen im Binärsystem: MultiplikationMultiplikation mit der Zielbasis) die nachfolgenden Rechenschritte identisch sind, muss auf einen gleichen Rest auch eine gleiche Ziffernfolge folgen. Dieser Schluss ist nicht bei den Vorkommastellen zulässig, da hier ja noch der 'alte' Algorithmus verwendet wird, bei der nach einem gleichen Rest eine Rechnen im Binärsystem: DivisionDivision durch einen anderen Andere Zahlensysteme: StellenwerteStellenwert erfolgte. periodisch (bin, hex) -> periodisch (dez)Wie sieht es nun aber aus, wenn die Zahl im Quellsystem bereits periodisch ist? Hier hilft ein Rechentrick weiter, der auch zur Umformung von periodischen Dezimalzahlen benutzt wird: ______ ______ 142857 142857 3*3*3*11*13*37 1 0,142857 = --------- = -------- = ------------------ = --- 1000000 999999 3*3*3*11*13*37*7 7 Der erste Schritt ist klar: Die Dezimalzahl wurde in den unechten Bruch 'zahl/1' umgeformt und dann so lange mit der Zahlenbasis 10 erweitert, bis alle Stellen der (ersten) Periode vor dem Komma stehen. Im zweiten Schritt liegt der Trick: Vom Nenner wird '1' abgezogen und der Periodenstrich fällt weg. Der Wert des Bruches bleibt unverändert. Das zu begründen würde an dieser Stelle zu weit führen. Es lässt sich natürlich aber beweisen. Da im Folgenden auch Binär-und Hex-Brüche behandelt werden müssen, sollte man sich an dieser Stelle gleich klar werden, was dem (99999)10 in diesen Systemen entspricht: (100000)2 - 1 = (11111)2 (10000)16 - 1 = (FFFF)16 Der dritte Schritt ist eine einfache Primfaktorzerlegung, aus der hervorgeht, dass es sich um den Bruch '1/7' handelt. Dieser Trick soll nun benutzt werden, um die periodische Binärzahl in unser Dezimalsystem zu wandeln: ____ (1,10011)2 = (?)10 Zuerst wird der periodische und der nicht-periodische Teil getrennt. Der periodische Anteil wird außerdem so normalisiert, dass die Periode direkt hinter dem Komma anfängt: ____ ____ (1,10011)2 = (1,1)2 + (0,0011)2 * 2^(-1) Man beachte, dass das Verschieben um eine Stelle in der Binärschreibweise nicht eine Rechnen im Binärsystem: MultiplikationMultiplikation mit 10 sondern mit 2 erfordert! Danach wird für die binäre Periode die selbe Umformung wie für die dezimale gemacht (binäre Darstellung!): ____ ____ ____ 0,0011 0011 0011 0,0011 = -------- = ------- = ------ 1,0000 10000 1111 Für die periodische Binärzahl ergibt sich der folgende Gesamtausdruck: ____ (0011)2 (1,10011)2 = (1,1)2 + --------- * 2^(-1) (1111)2 Es sind jetzt insgesamt drei Binärzahlen umzuformen, allerdings jeweils sehr einfache: (1,1)2 = 1*2^0 + 1*2^(-1) = 1+0,5 = 1,5 (0011)2 = (11)2 = 1*2^1 + 1*2^0 = 2+1 = 3 (1111)2 = 1*2^3 + 1*2^2 + 1*2^1 + 1*2^0 = 8+4+2+1 = 15 ____ 3 3 1 1*1 (1,10011)2 = 1,5 + ---- *2^(-1) = 1,5 + ---- * --- = 1,5 + ----- 15 15 2 5*2 = 1,5 + 0,1 = (1,6)10 ======= Aus der periodischen Binärzahl wurde eine nicht-periodische Dezimalzahl. Das liegt daran, dass die Periode durch einen Faktor '5' im Nenner verursacht wurde. '5' ist kein Primfaktor von '2', wohl aber von '10'. Die Umformung einer periodischen Hexzahl läuft entsprechend: _ (3,09)16 = (?)10 1. (3)16 = (3)10 _ _ (9)16 (9)16 9 2. (0,09)16 = 16^(-1) * ------- = ------- = ---- (10)16 (F)16 15 _ 9 * 1 3 3 3. (3,09)16 = 3 + --------- = 3 + -------- = 3 + ---------------- 15 * 16 5 * 16 5*2* 2* 2* 2 3* 5* 5* 5 375 = 3 + -------------------- = 3 + ------- = (3,0375) 5*2* 5*2* 5*2* 5*2 10000 ======== periodisch (dez) -> periodisch (bin, hex)Eine periodische Dezimalzahl kann ganz analog konvertiert werden. Es ist nur etwas schwieriger, weil im Ziel-System gerechnet werden muss. Vor allem die Auswertung des Bruches dürfte im Hex-System doch einige Schwierigkeiten machen. Im Binärsystem ist es aber durchaus denkbar so vorzugehen, man muss nur darauf achten, dass man bei der Rechnen im Binärsystem: DivisionDivision des periodischen Dezimalbruches auf jeden Fall auch wieder eine periodische Binärzahl erhält. Man muss also ständig überprüfen, ob man eine Periode vollständig ausgerechnet hat. Einfacher ist es aber, auch die periodische Dezimalzahl mit der gewohnten Methode umzuwandeln: _ (2,3)10 --> (???)2 ------------------ 2,333.. / 4 = 0 Rest: 2,333... - 0*4 = 2,333... 2,333.. / 2 = 1 Rest: 2,333... - 1*2 = 0,333... 0,333.. / 1 = 0 Rest: 0,333... - 0*1 = 0,333... +->0,333.. * 2 = 0,666... Rest: 0,666... - 0 = 0,666... | 0,666.. * 2 = 1,333... Rest: 1,333... - 1 = 0,333... +->0,333.. ^ __ | +--- (010,01)2 | +-- Periodizität erkennbar _ (2,3)10 --> (???)16 ------------------- 2,333.. / 16 = 0 Rest: 2,333... - 0*16 = 2,333... 2,333.. / 1 = 2 Rest: 2,333... - 2* 1 = 0,333... +->0,333.. * 16 = 5,333... Rest: 5,333... - 5 = 0,333... +->0,333.. ^ _ | +--- (2,5)16 | +-- Periodizität erkennbar Was hier dem Ein- oder Anderen vielleich Schwierigkeiten bereitet, ist wohl die Rechnen im Binärsystem: MultiplikationMultiplikation der Periode mit 2 beziehungsweise 16. Zwei mögliche Wege sind hier gangbar: 1.: Auflösung der Periode mit dem 'Bruch-Trick' und anschließende Berechnung des Terms: _ _ 3 3 1 16 15+1 _ 0,3 * 16 = ---- * 16 = --- * 16 = --- * 16 = ---- = ------ = 5,3 10 9 3 3 3 2.: Berechnung einer einzigen Periode und Betrachtung des Übertrags: 0,3 * 16 = 4,8 --> Die eine Ziffer lange Periode ergab innerhalb der Periode den Wert 8 und einen Übertrag von 4. Dieser Übertrag wird auch von der folgenden Periode in diese hineingetragen (und von der danach folgenden in die folgende etc.). 0,8 + 0,4 = 1,2 --> Der Wert der Periode ist jetzt 2. Es kommt aber (zufällig) erneut zu einem Übertrag von 1. Dieser wird auch wieder zwischen allen Perioden auftreten: 0,2 + 0,1 = 0,3 --> Kein weiterer Übertrag. Die Periode ist also 3. Der Übertrag vor die erste Periode ist 4+1 = 5: ---> 0,3 * 16 = 5,3 Ein weiteres Beispiel: __ 1234,62 * 2 --> 0,62 * 2 = 1,24 --> Übertrag = 1 --> Periode = 0,24 + 0,01 = 0,25 --> kein weiterer Übertrag --> Vorperioden-Stellen = 1234*2 + 1 = 2469 __ __ --> 1234,62 * 2 = 2469,25 |