Umrechnung verschiedener Zahlensysteme

Hallo Experten,
weiter unten wurde ja bereits erwähnt, das es verschiedene Zahlensysteme gibt, die z. B. auf 10, 16, 60, 2 oder auch 20 beruhen.
Meine Frage: Gibt es eine Formel mit der man die eizelnen Zahlensysteme ineinander umrechnen kann? Eine für normale Bürger verständliche?
Ich weiss bereits, wie ich eine Zahl aus einem anderen System ins Dezimalsystem umrechne, aber umgekehrt oder sogar eine Binärzahl direkt in Hexadezimal umzurechnen, bereitet mir noch Probleme.

Danke!

mfg
Martin

Hallo Martin!

… oder sogar eine
Binärzahl direkt in Hexadezimal
umzurechnen, bereitet mir noch Probleme.

Genau das ist eine der leichtesten Übungen!

Du mußt die Binärzahl nur von rechts her in Vierergruppen zusammenfassen. Jeder diese Vierergruppen weist Du dann Ihren Hex-Wert zu, indem Du aus der vierstelligen Binärzahl eine Dezimalzahl machst. Dabei ist zu beachten, daß Zahlen 10 bis 15 in die Buchstaben A bis F umgewandelt werden.
Ich glaub, daß ein Beispiel das am besten verdeutlicht.

Binär 1110101111
in Vierergruppen 11 1010 1111
Dezimal 3 10 15
Hexadezimal 3 A F

1110101011 (binär) entspricht also 3AF (hex)

Ich hoffe, daß das einigermaßen verständlich war, ansonsten bin ich gern nochmal behilflich.

Viele Grüße

Floh

Bleibt also noch das „umgekehrt“ offen: Der Schritt vom Dezimalsystem in ein beliebiges anderes Zahlensystem mit der Basis a:

Mit Formel kann ich nicht dienen, aber ein Verfahren gibt es:

Schritt 1: Zunächst einmal benötigt man a Ziffern. Das ist noch kein Problem, wenn die Basis kleiner als 10 ist (z.B. 7), dann läßt man einfach ein paar der üblichen weg (im Beispiel benötigt man nur 0-6 - 7 schreibt sich dann ja 10 - also entfällt 7,8,9. Wenn die Basis größer wird als 10, muß man neue Ziffern erfinden. Dazu benutzt man zunächst die Buchstaben, damit schafft man es bis 36. Wie es dann offiziell weitergeht, weiß ich selber nicht, aber mit Kleinbuchstaben schafft man es bis 62, womit wir auch das System zur Basis 60 in der Antwort drin haben.

Schritt 2: Man ermittelt die höchste Potenz der Basis a, die noch in der umzuwandelnden Dezimalzahl enthalten ist. Dazu macht man sich am besten in Excel eine entsprechende Reihe. Beispiel 654321 zur Basis 15:
15^0 = 1
15^1 = 15
15^2 = 225
15^3 = 3375
15^4 = 50625
15^5 = 759375
50625 ist die höchste enthaltene Potenz. 759375 ist bereits größer als 654321.

Schritt 3: Jetzt dividiert man durch die höchste enthaltene Potenz und bestimmt den Rest. Den Rest dividiert man durch die nächstkleiner Potenz und so weiter. Also
654321:50625 = 12 Rest: 46821
46821:3375 = 13 Rest: 2946
2946:225 = 13 Rest: 21
21:15 = 1 Rest: 6
(6:1 = 6 Rest: 0)
Geht auch wieder sehr leicht, wenn man Excel hernimmt.

Schritt 4: Prinzipiell hätten wir jetzt das Ergebnis schon, nämlich im Beispiel:
654321 = 12*15^4+13*15^3+13*15^2+1*15^1+6*15^0
Wir müssen nur noch in eine Ziffernfolge umwandeln, dabei ist 12 dann C und 13 D.
Wir erhalten die (ich nehme an Pentadezimal-)Zahl CBB16.

Markus

Danke, ich schätze ich habe alles verstanden.
Der Vollständigkeit halber:
Ich vermute, man kann diese Formel auch auf andere Zahlensysteme anwenden, z. B. die auf 20 basieren, oder auf 6.
Der „Umweg“ übers Hexadezimalsystem ist deshalb, weil Menschen unserer Zivilisation leichter damit rechnen können.

Nochmals danke, korrigiere mich, wenns falsch ist.

mfg
Martin

Ich vermute, man kann diese Formel auch
auf andere Zahlensysteme anwenden, z. B.
die auf 20 basieren, oder auf 6.
Der „Umweg“ übers Hexadezimalsystem ist
deshalb, weil Menschen unserer
Zivilisation leichter damit rechnen
können.

Nochmals danke, korrigiere mich, wenns
falsch ist.

mfg
Martin

Leider nein, so einfach geht es nur, weil 16 selber die vierte Potenz von 2 ist.
Ebenfalls noch leicht wäre die umrechnung von binär auf die zahlensysteme mit der basis 4 = 2^2 (mit zweiergruppen) 8 = 2^3 mit dreiergruppen, 32 = 2^5 (mit fünfergruppen) etc…

Der Umweg über das Hexadezimalsystem beim Programmieren ist wirklich deswegen, weil die vielen Einser und Nullen unüberschauhbar werden, für Menschen aus allen Zivilisationen.
Markus