====== LU01f - Zahlensysteme umrechnen ====== [[http://www.arndt-bruenner.de/mathe/scripts/Zahlensysteme.htm|Umrechner mit Erklärung der einzelnen Schritte]] ===== Grundlagen ===== Im Alltag sind wir uns gewohnt, Zahlen im Dezimalsystem (Basis 10) darzustellen. Die Informatik basiert aber auf dem Binärsystem (Basis 2). Deshalb werden auch Dateien und Programmvariablen binär gespeichert. Um diese Informationen zu verstehen, müssen Sie die Zahlen zwischen den verschiedenen Zahlensystemen umrechnen. Um Missverständnisse zu vermeiden, geben wir bei den Zahlen jeweils das Zahlensystem an. Dazu notieren wir die Basis tiefgestellt neben die Zahl: * Dezimalsystem: 15310 * Binärsystem: 1010 11002 * Oktalsystem: 2438 * Hexadezimalsystem: 1A16 Ebenfalls gebräuchlich ist der Buchstabe ''b'' für das Binärsystem bzw. ''x'' für das Hexadezimalsystem: * '1010 1100'b * '1A'x ===== Dezimalzahlen umrechnen ===== ==== Allgemein ==== Um eine Dezimalzahl in ein anderes Zahlensystem umzurechnen, führen wir eine Reihe von Divisionen durch. Dezimalzahl ----------- = Ergebnis und Rest Basis * Notieren Sie den Rest als Resultat (von rechts nach links). * Anschliessend wiederholen Sie die Division mit dem Ergebnis, bis das Ergebnis 0 ist. {{:modul:m114:learningunits:lu01:dezimalumrechnen.png?400|}} === Beispiel === Rechnen Sie die Dezimalzahl **253** ins 7er-System um: 25310 = ???7 ^ Schritt ^ Division ^ Ergebnis ^ Rest ^ Resultat ^ | 1 | 253 / 7 | 36 | 1 | __17 | | 2 | 36 / 7 | 5 | 1 | _117 | | 3 | 5 / 7 | 0 | 5 | 5117 | ==== Dezimal => Binär ==== Wie im Beispiel führen wir eine Reihe von Divisionen durch, um die Dezimalzahl ins Binärsystem zu übertragen. Da das Binärsystem nur zwei Ziffern kennt, wird das Resultat viele Stellen enthalten. === Anzahl Stellen abschätzen === Schätzen Sie zunächst ab, wie viele binäre Stellen das Resultat enthalten wird. Dabei gilt die Faustregel: 3 dezimale Stellen entsprechen ungefähr 10 binäre Stellen. Dezimalstellen * 10 binäre Stellen = ------------------- 3 === Notation in 4er Gruppen === Binäre Zahlen werden einfacher lesbar, wenn Sie die Ziffern in 4er Gruppen (von rechts nach links) anordnen. Die vorderste Gruppe füllen wir mit führenden Nullen auf, bis auch diese aus 4 binären Ziffern besteht. ''0010 1010 1111 0001'' === Beispiel === 2475310 = ????2 * Die Dezimalzahl hat 5 Stellen; Die binäre Zahl wird maximal 17 Stellen haben (5 / 3 * 10) 24753 / 2 = 12376 Rest 1 12376 / 2 = 6188 Rest 0 6188 / 2 = 3094 Rest 0 3094 / 2 = 1547 Rest 0 1547 / 2 = 773 Rest 1 773 / 2 = 386 Rest 1 386 / 2 = 193 Rest 0 193 / 2 = 96 Rest 1 96 / 2 = 48 Rest 0 48 / 2 = 24 Rest 0 24 / 2 = 12 Rest 0 12 / 2 = 6 Rest 0 6 / 2 = 3 Rest 0 3 / 2 = 1 Rest 1 1 / 2 = 0 Rest 1 **Resultat: 2475310 = 0110 0000 1011 00012** ===== Binäre Zahlen umrechnen ===== Binäre Zahlen lassen sich relativ einfach ins 8er (Oktal) und 16er (Hexadezimal) System umrechnen. Das liegt daran, dass 8 und 16 Potenzen von 2 sind: * 23 = 8 * 24 = 16 Deshalb werden binäre Werte häufig als oktale oder hexadezimale Zahlen dargestellt. Die Umrechnung ins 10er System ist hingegen schwieriger, da 10 keine Potenz von 2 ist. ==== Binär <=> Oktal ==== Eine Ziffer im 8er-System entspricht drei Ziffern im 2er-System: 81 = 23 === Binäre Zahl ins oktale System übertragen === - Zerlegen Sie die binäre Zahl von rechts nach links in Gruppen von 3 Ziffern. - Übertragen Sie jede dieser 3er Gruppen ins oktale System. ^ Binär ^ Oktal ^ ^ Binär ^ Oktal ^ | 000 | 0 | / | 100 | 4 | | 001 | 1 | / | 101 | 5 | | 010 | 2 | / | 110 | 6 | | 011 | 3 | / | 111 | 7 | == Beispiel == 0110 0000 1011 00012 = ??? 8 1. 3er Gruppen bilden: 0 110 000 010 110 001 2. Vorderste Gruppe ergänzen: 000 110 000 010 110 001 3. Übertragen ins oktale System: 0 6 0 2 6 1 **Resultat: 0110 0000 1011 00012 = 602618** === Oktale Zahl ins Binärsystem übertragen === Diese Umwandlung ist ebenso einfach: - Wandeln Sie einfach jede oktale Ziffer in die **drei** entsprechenden binären Ziffern um. * Dabei ist es egal, ob Sie von rechts nach links oder von links nach rechts vorgehen. - Notieren Sie die binären Ziffern in 4er Gruppen von rechts nach links. * Ergänzen Sie bei Bedarf die vorderste 4er Gruppe mit führenden Nullen. == Beispiel == 5738 = ???2 1. Umwandeln: 5 => 101 7 => 111 3 => 011 2. 4er Gruppen bilden: 0001 0111 1011 **Resultat: 5738 = 0001 0111 10112** ==== Binär <=> Hexadezimal ==== Eine Ziffer im 16er-System entspricht vier Ziffern im 2er-System: 161 = 24 === Binäre Zahl ins hexadezimale System übertragen === - Zerlegen Sie die binäre Zahl von rechts nach links in Gruppen von 4 Ziffern. * Ergänzen Sie bei Bedarf die vorderste 4er Gruppe mit führenden Nullen. - Übertragen Sie jede dieser 4er Gruppen ins hexadezimale System. ^ Binär ^ Hex ^ ^ Binär ^ Hex ^ | 0000 | 0 | | 1000 | 8 | | 0001 | 1 | | 1001 | 9 | | 0010 | 2 | | 1010 | A | | 0011 | 3 | | 1011 | B | | 0100 | 4 | | 1100 | C | | 0101 | 5 | | 1101 | D | | 0110 | 6 | | 1110 | E | | 0111 | 7 | | 1111 | F | === Beispiel === 0110 0000 1011 00012 = ??? 16 1. 4er Gruppen bilden: 0110 0000 1011 0001 2. Übertragen ins hexadezimale System: 6 0 B 1 **Resultat: 0110 0000 1011 00012 = 60B116** === Hexadezimale Zahl ins binäre System übertragen === Wie Sie wohl bereits vermutet haben, drehen wir den Prozess einfach um: - Wandeln Sie jede hexadezimale Ziffer in die entsprechenden **vier** binären Ziffern um. == Beispiel == 1A5C16 = ????2 1 = 0001 A = 1010 5 = 0101 C = 1100 **Resultat: 1A5C16 = 0001 1010 0101 11002** ==== Binär => Dezimal ==== //Siehe auch [[http://de.wikihow.com/Bin%C3%A4rzahlen-in-Dezimalzahlen-umwandeln]]// === Potenzen === Die offensichtliche Methode zur Umrechnung ins Dezimalsystem basiert auf dem Wert der einzelnen binären Ziffern. Von rechts nach links verdoppelt sich der Wert der einzelnen Ziffern. - Schreibe die binären Ziffern von oben nach unten. - Schreibe von unten nach oben den Wert der Zahl. - Multipliziere jede Ziffer mit ihrem Wert. - Addiere alle Werte. == Beispiel == 1001 01012 = ???10 ^ Ziffer ^ Wert ^ Produkt ^ | 1 | 128 | 128 | | 0 | 64 | 0 | | 0 | 32 | 0 | | 1 | 16 | 16 | | 0 | 8 | 0 | | 1 | 4 | 4 | | 0 | 2 | 0 | | 1 | 1 | 1 | ^ Summe ^^ 149 ^ **Resultat: 1001 01012 = 14910** === Verdoppelungsmethode === Bei der Verdoppelungsmethode verwenden wir nur eine Addition und die Multiplikation mit 2. Daher wird es wesentlich einfacher binäre Zahlen im Kopf umzurechnen. Für jede binäre Stelle führen wir von links nach rechts zwei Rechnungen durch: - Multipliziere das bisherige Resultat mit 2 - Addiere die binäre Stelle zum Resultat {{:modul:m114:learningunits:lu01:binaerdez.png?400|}} == Beispiel == 1001 01012 = ???10 ^ Binäre Ziffer ^ Berechnung ^ Resultat ^ | | **Start** | 0 | | **1**001 0101 | 0*2 + 1 | 1 | | 1**0**01 0101 | 1*2 + 0 | 2 | | 10**0**1 0101 | 2*2 + 0 | 4 | | 100**1** 0101 | 4*2 + 1 | 9 | | 1001 **0**101 | 9*2 + 0 | 18 | | 1001 0**1**01 | 18*2 + 1 | 37 | | 1001 01**0**1 | 37*2 + 0 | 74 | | 1001 010**1** | 74*2 + 1 | 149 | **Resultat: 1001 01012 = 14910** Mit dieser Methode lassen sich auch andere Zahlensysteme ins Dezimalsystem übertragen. Um eine Zahl im 16er System (Hexadezimal) ins Dezimalsystem zu übertragen, wird einfach das bisherige Resultat mit 16 multipliziert. ---- {{tag>m114-A1G m114-A1F}} [[https://creativecommons.org/licenses/by-nc-sa/4.0/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] Marcel Suter