Header-Bild
Image
Zahlensysteme

Die magische Welt der Zahlensysteme

Wir alle benutzen tagtäglich Zahlen, schließlich begegnen sie uns überall: Der Bus fährt auf der Linie 17, ist 14 Minuten zu spät und ich bekomme 8 Anrufe von meinem Chef wo ich denn bleibe.

Diese Zahlen, die wir im Alltag benutzen, sind alle aus dem Dezimalsystem und die zugrundeliegende Logik dahinter zu verstehen hilft enorm die anderen Systeme zu verwenden und damit zu arbeiten.

Wir werden uns hier einmal anschauen, welche Systeme es überhaupt gibt, wie alle funktionieren und wie wir von einem System ins andere umrechnen.

Die Basics

Das Dezimalsystem besteht aus 10 Zahlen, nämlich denen von 0 bis 9. Daher auch der Name “Dezimalsystem”, denn “dezimal” bedeutet übersetzt “auf der Grundzahl 10 beruhend; auf die Basis 10 bezogen” - abgeleitet vom lateinischen “decem” (”zehn”).

Andere Systeme, die vor allem in der Informatik und anderer Arbeit am Computer verwendet werden, sind beispielsweise das Hexadezimalsystem sowie das Binär- und Oktalsystem.

Das Hexadezimalsystem basiert auf 16 “Zahlen” - Anführungsstriche deshalb, weil wir nur 10 arabische Zahlen zur Verfügung haben und sich die schlauen Köpfe hinter diesem System am lateinischen Alphabet bedient haben. Somit haben wir hier die Zahlen von 0 bis 9 sowie die Buchstaben A bis F.

Das Binärsystem ist hier deutlich sparsamer, wie der Name schon sagt. Dieses System basiert auf 2 Zahlen, der 0 und der 1. Menschen, die nichts mit Computern am Hut haben, sehen dieses System vermutlich nur in Matrix oder anderen Filmen und Serien wo sich die Macher:innen diverser Klischees bedienen.

Selten aber immernoch häufig genug kommt das Oktalsystem zum Einsatz. Das besteht aus 8 zahlen, nämlich denen von 0 bis 7.

Zur Schreibweise

Wenn du mit mehreren verschiedenen Zahlensystemen arbeitest ist es ratsam, anzugeben welche Zahl in welchem System ist. Hierzu schreibt man die Basis des Systems, beispielsweise 10 für das Dezimalsystem, als Index an die Zahl. So wird aus der Zahl 1337 dann 133710. Wenn wir weiter unten die einzelnen Umrechnungswege einmal durchgehen, siehst du diese Schreibweise noch häufiger.

In der Programmierung sind andere Arten bekannt um anzugeben, dass eine Zahl in beispielsweise dem Hexadzimalsystem ist. In diesem Fall wird der Zahl ein "0x" (Null, nicht der Buchstabe O) vorangestellt. Oktale Zahlen werden in der Programmiersprache C hingegen mit einem Backslash (\) angegeben, bspw. \2471. Binäre Zahlen wiederum bedienen sich wieder einem Buchstaben, so wird die Zahl 101001110012 zu 0b10100111001 (auch hier wieder eine Null am Anfang und nicht der Buchstabe O).

Die Logik

Das kann jetzt schon ziemlich verwirrend gewesen sein, vor allem wenn man vorher nie etwas mit anderen Zahlensystemen zu tun hatte.

Dennoch ist die zugrundeliegende Logik recht simpel und ich versuche dir jetzt möglichst einfach zu erklären, wie das funktioniert. Damit wir uns aber nicht zusätzlich ein fremdes System anschauen müssen, nehme ich zur Veranschaulichung das Dezimalsystem. Das kennst du ja bereits gut genug.

Die Regel

Kurz und knapp: Immer wenn der Wertebereich einer Stelle erschöpft ist, erhöht sich die Stelle links davon um 1 und die Stelle selbst sinkt auf 0.

Erklärung

Stell dir einen Zählzähler wie diesen hier vor:

Bild entfernt.

Wenn du einmal auf den Knopf oben drückst, dreht sich das Zahlenrad ganz rechts um eine Stelle weiter.

Was passiert aber wenn dort bereits 9 steht und du noch einmal drückst?

Die Stelle rechts wird wieder zur 0 während eine Stelle links davon um 1 erhöht wird, sodass auf dem Display “10” angezeigt wird.

Und im Grunde ist es das schon, das ist die ganze Magie hinter den Zahlensystemen.

Zerpflücken wir aber einmal die Regel von oben, um es dir noch einfacher zu machen diese zu verstehen:

Immer wenn der Wertebereich (der Bereich der verfügbaren Zahlen, in diesem Fall die Zahlen von 0 bis 9) einer Stelle erschöpft (wir sind am Ende des Bereichs und wollen noch weiter, der Bereich ist in diesem Sinne dann erschöpft, da wir nicht weiter kommen können) ist, erhöht sich die Stelle links davon um 1 und die Stelle selbst sinkt auf 0.

Warum fängt man mit der 0 an?

In den meisten Fällen in denen man etwas zählt, fängt man mit 1 an und zählt dann hoch und das ist auch vollkommen okay, weil es oft gar keinen Sinn ergeben würde mit 0 anzufangen.

Die erste Zahl in jedem Zahlensystem ist aber die 0.

Um das zu erklären, stell dir einfach vor du gehst einkaufen und willst 5 Äpfel kaufen. Du gehst in den Supermarkt, nimmst dir einen Einkaufskorb und startest deinen Einkauf. Wie viele Äpfel hast du zu diesem Zeitpunkt bereits?

Richtig, 0.

Die Systeme im Detail

Bevor ich auf die weiteren Systeme eingehe, noch ein kleiner Hinweis. Dieser Abschnitt ist ziemlich lang, das liegt allerdings daran, dass ich jeden möglichen Weg zwischen den 4 bekanntesten Zahlensysteme, nämlich dezimal, hexadezimal, oktal und binär, einmal aufzeige.

Wenn du nach einem bestimmten Rechenweg suchst, schau in dem Abschnitt der deine Ausgangszahl am besten repräsentiert. Hast du beispielsweise eine Hexadezimalzahl und möchtest diese in Oktal umrechnen, schau dir die Erläuterungen unter dem Abschnitt der hexadezimalen Zahlen an.

Das Dezimalsystem

Ich spare mir an dieser Stelle einmal das Dezimalsystem großartig zu erklären, ich gehe einfach mal davon aus, dass du das bereits gut genug kennst. Stürzen wir uns also direkt in die Umrechnung in die anderen Systeme.

Wir schauen uns gleich die einzelnen Rechnungswege im Detail an, vorab aber einmal wie das funktioniert, den grundsätzlich folgt die Umrechnung immer dem gleichen Schema: Du teilst die Ausgangszahl n solange durch die Basis b bis das Ergebnis 0 ist. Dabei notierst du jedes mal nicht einfach das Ergebnis als Dezimalzahl, beispielsweise 2,5 sondern als ganze Zahl mit Rest. Die Reste liest du dann von unten nach oben ab. So erhältst du das Ergebnis der Umrechnung.

Dezimal zu Binär

Bei der Umrechnung einer Dezimalzahl in eine Binärzahl ist die Basis b = 2 und als Ausgangszahl n nehmen wir 133710. Die Rechnung sieht demnach wie folgt aus:

RechnungErgebnisRest
1337 / 26681
668 / 23340
334 / 21670
167 / 2831
83 / 2411
41 / 2201
20 / 2100
10 / 250
5 / 221
2 / 210
1 / 21

An diesem Punkt haben wir 0 als ganzzahliges Ergebnis, damit sind wir mit der Umrechnung fertig.

Für das Umrechnungsergebnis lesen wir jetzt die Rest von unten nach oben. Dabei kommt dann die Zahl 101001110012 heraus. Das ist unser Ergebnis.

Dezimal zu Hexadezimal

Im Hexadezimalsystem ist die Basis b = 16, die Ausgangszahl n belassen wir bei 133710. Nach dem oben erklärten Schema sieht die Rechnung nun so aus:

RechnungErgebnisRest
1337 / 16839
83 / 1653
5 / 1505

Schreiben wir nun wieder die Reste von unten nach oben auf erhalten wir als Ergebnis 53916.

Schauen wir uns aber noch ein anderen Beispiel an, denn bei der Ausgangszahl 133710 sehen wir in der hexadezimalen Schreibweise die Besonderheit des Systems gar nicht so richtig. Nehmen wir als Ausgangszahl n = 199510:

RechnungErgebnisRest
1995 / 1612411 => B
124 / 16712 => C
7 / 1607

Wie du siehst überschreiten wir hier den Bereich der dezimalen Zeichen 0 bis 9, weswegen wir nach der 9 mit den Buchstaben A bis F weiterzählen. Deswegen wandeln wir die 11 in B und die 12 in C um. Das Ergebnis ist hier also 7CB16.

Dezimal zu Oktal

Zu guter Letzt rechnen wir die Ausgangszahl n = 133710 in das Oktalsystem um. Hier ist die Basis b = 8, was zu folgender Rechnung führt:

RechnungErgebnisRest
1337 / 81671
167 / 8207
20 / 824
2 / 802

Auch hier schreiben wir das Ergebnis wieder von unten nach oben auf und erhalten 24718 als Ergebnis.

Das Binärsystem

Ganz egal was du am Computer oder Handy machst, sobald es darum geht Daten von A nach B zu bringen kommt das Binärsystem zum Einsatz. Ob auf der Festplatte, der SD-Karte oder auf dem Weg durch die Bambusleitung zum Server von Google wenn du mal wieder vergessen hast ob der Plural von Pizza nun Pizzen oder Pizzas ist, Daten werden immer in binärer Form abgebildet und bewegt. Stark vereinfacht erklärt liegt der Hauptgrund darin, dass Daten als elektrische Stromstöße übertragen werden und entweder hast du gerade ein elektrisches Signal (1) oder eben nicht (0).

Wenn du mehr zu den Hintergründen dazu erfahren möchtest, findest du Online genügend gute Erklärungen dazu, warum Daten auf diese Weise übertragen werden.

Binär zu Dezimal

Um vom binären System zum Dezimalsystem umzurechnen schauen wir uns die Zahl 101001110012 einmal genauer an und zerlegen sie in ihre einzelnen Strellen:

?           
Binär10100111001
?           

Jetzt weisen wir jeder Stelle eine Zahl zu. Wir beginnen ganz rechts, fangen mit der 1 an und multiplizieren diese Zahl bei jedem Schritt nach links mit 2:

Wert10245122561286432168421
Binär10100111001
?           

Als nächstes gehen wir jede Spalte einmal durch und multiplizieren den Wert mit der binären Stelle:

Wert10245122561286432168421
Binär10100111001
tatsächlicher Wert102402560032168001

Daraus ergibt sich dann die folgende Rechnung:

1024 + 0 + 256 + 0 + 0 + 32 + 16 + 8 + 0 + 0 + 1 = 1337

Das war der lange Weg, es gibt aber natürlich noch einen kürzeren Weg. Um diesem Weg zu folgen zählst du als erstes einmal wie viele Stellen du in der Binärzahl hast. In diesem Fall sind das 10. Die Dezimalzahl ist dann gleich die Summe der binären Stellen dn mal ihrer 2er-Potenz 2n. Bei 10 Stellen sieht die Formel also wie folgt aus:

Ergebnis = d10 * 210 + d9 * 29 + d8 * 28 + d7 * 27 + d6 * 26 + d5 * 25 + d4 * 24 + d3 * 23 + d2 * 22 + d1 * 21 + d0 * 20 

Setzen wir nun die Zahlen ein, die wir in den Tabellen oben bereits den Stellen zugewiesen haben. Denk aber daran, dass wir von rechts nach links gehen.

Ergebnis = 1 * 210 + 0 * 29 + 0 * 28 + 1 * 27 + 1 * 26 + 1 * 25 + 0 * 24 + 0 * 23 + 1 * 22 + 0 * 21 + 1 * 20

Zum Schluss lösen wir die Potenzen auf womit wir wieder bei der gleichen Schlussformel sind wie oben:

Ergebnis = 1024 + 0 + 256 + 0 + 0 + 32 + 16 + 8 + 0 + 0 + 1 = 133710

Binär in Hexadezimal

Ich verspreche dir an dieser Stelle, die Umrechung von binär in hexadezimal ist nicht so kompliziert. Im Grunde besteht diese Umrechnung nur aus dem Ablesen der Zuordnungstabelle, die ich dir hier einmal zeige:

BinärHexadezimal
00000
00011
00102
00113
01004
01015
01106
01117
10008
10019
1010A
1011B
1100C
1101D
1110E
1111F

Jetzt nimmst du deine binäre Zahl, gehst sie von rechts nach links einmal durch und teilst sie in 4er-Päcken. So wird aus 101001110012 => 101 0011 1001. Für eine leichtere Zuordnung füllst du den ersten Teil mit so vielen Nullen auf bis auch dieser 4-stellig ist. So wird daraus dann 0101 0011 1001.
Als nächstes weist du jedem "Paket" eine Hexadezimalzahl zu:

01015
00113
10019

Diese Zahlen lesen wir jetzt von oben nach unten ab und erhalten unser Ergebnis 53916.

Binär zu Oktal

Bei der Umrechung von binären Zahlen zu oktalen Zahlen folgen wir einem ähnlichen Schema. Auch hier haben wir eine Zuordnungstabelle:

BinärOktal
0000
0011
0102
0113
1004
1015
1106
1117

Als nächstes zerlegen wir unsere Binärzahl in 3er-Pakete und füllen den ersten teil auf 3 Stellen auf. So wird aus 101001110012 => 010 100 111 001. Zum Schluss weisen wir diesen Paketen die Zahlen aus der Tabelle zu:

0102
1004
1117
0011

Lesen wir die zugewiesenen Zahlen jetzt wieder von oben nach unten ab erhalten wir als Ergebnis 24718.

Das Hexadezimalsystem

Dieses Zahlensystem verwende ich in der Praxis tatsächlich nur für Farbcodes. Alle Farben, die du auf dieser Seite siehst sind in hexadezimaler Schreibweise angegeben. Ansonsten kommt das System hauptsächlich zur Adressierung im Speicher zum Einsatz, so hat jede Datei eine Adresse auf der Festplatte die als Hexadezimalzahl verarbeitet wird.

Apropos Farben: wusstest du, dass du einen Farbcode wie beispielsweise #ff00ff einfach bei Google eingeben kannst um einen Colorpicker zu Gesicht zu bekommen?

Schauen wir uns aber einmal die Umrechnung genauer an.

Hexadezimal in Dezimal

Wir haben uns weiter oben schon einmal mit der Umrechnung von Binär in Dezimal beschäftigt, diese Umrechnung ist ähnlich: Du rechnest die Stellen mal ihrer 16er-Potenz. Bei der Zahl 539 sieht die Formel also wie folgt aus:

Ergebnis = d2 * 162 + d1 * 161 + d0 * 160 

Setzen wir die Zahlen ein ergibt sich daraus folgendes:

Ergebnis = 5 * 162 + 3 * 161 + 9 * 160

Nun lösen wir die Potenzen auf:

Ergebnis = 5 * 256 + 3 * 16 + 9 * 1

Das wiederum ergibt dann:

Ergebnis = 1280 + 48 + 9 = 133710

Hexadezimal in Binär

Um von Hexadezimal in Binär umzurechnen bedienen wir uns der gleichen Tabelle, die wir bei der Umrechnung von binär in hexadezimal bereits verwendet haben. Hier suchst du dir nur die binären Entsprechungen zu den hexadezimalen Stellen raus und fügst sie zusammen. Aber lass uns das einmal gemeinsam machen.

Hier noch einmal die Zuordnungstabelle:

BinärHexadezimal
00000
00011
00102
00113
01004
01015
01106
01117
10008
10019
1010A
1011B
1100C
1101D
1110E
1111F

Als Ausgangszahl nehmen wir die 53916. Wir zerlegen diese nun in ihre einzelnen Stellen und weisen ihnen die binären Werte zu:

Hexadezimal539
Binär010100111001

Jetzt schreiben wir diese Binärzahlen einfach nur zusammen, streichen vorangestellte Nullen und bekommen dann 101001110012 als Ergebnis.

Hexadezimal in Oktal

Diese Umrechnung ist wieder etwas umfangreicher, aber keine Sorge, das Prinzip bleibt simpel.

Zunächst rechnen wir die Hexadezimalzahl in binär um, um sie anschließend in eine Oktalzahl umzuwandeln. Nehmen wir wieder die Zahl 53916 als Ausgangszahl. Wie wir im vorigen Abschnitt bereits gesehen haben ist die binäre Entsprechung 101001110012. Jetzt nehmen wir auch hier eine Zuordnungstabelle, nämlich die, die wir bereits bei der Umrechnung von Binär in Oktal verwendet haben:

BinärOktal
0000
0011
0102
0113
1004
1015
1106
1117

Wir teilen unsere binäre Zahl also erst einmal von hinten in 3er-Pakete auf und erhalten so 010 100 111 001. Jetzt weisen wir den binären Zahlen die oktale Entsprechung zu:

0102
1004
1117
0011

Und als Ergebnis erhalten wir dann 24718.

Das Oktalsystem

Von den 4 "großen" Zahlensystemen wird das oktale System am seltensten verwendet. Ich persönlich nutze es ausschließlich um Datei- und Ordnerberechtigungen auf Linux- oder MacOS-Systemen zu bearbeiten, da diese Berechtigungen in oktaler Schreibweise angegeben werden.

Oktal in Dezimal

Die Umrechnung einer Oktalzahl in eine Dezimalzahl erfolgt nach dem gleichen Prinzip wie die Umrechnung von binär in dezimal oder die Umrechnung von hexadezimal in binär, nämlich indem du die Stellen mit ihrer 8er-Potenz multiplizierst und die Ergebnisse am Ende summierst.

Nehmen wir die Zahl 24718 als Ausgangszahl, sieht die Formel wie folgt aus:

Ergebnis = d3 * 83 + d2 * 82 + d1 * 81 + d0 * 80 

Jetzt setzen wir wieder die Zahlen ein...

Ergebnis = 2 * 83 + 4 * 82 + 7 * 81 + 1 * 80 

...und lösen die Potenzen auf:

Ergebnis = 2 * 512 + 4 * 64 + 7 * 8 + 1 * 1 

Zum Schluss rechnen wir alles zusammen:

Ergebnis = 1024 + 256 + 56 + 1 = 133710

Oktal in Binär

Nachdem wir bereits die Umrechnung von Hexadezimal in Binär hinter uns haben kannst du dir vielleicht schon denken, wie wir oktale Zahlen in binär umrechnen, nämlich mit einer Zuweisungstabelle. Wir nehmen also unsere schon bekannte Tabelle zur Hand:

BinärOktal
0000
0011
0102
0113
1004
1015
1106
1117

Nun nehmen wir wieder die Zahl 24718 als Ausgangszahl und weisen ihren Stellen die binären Entsprechungen zu:

Oktal2471
Binär010100111001

Zum Schluss fügen wir die Zahl wieder zusammen, streichen vorangestellte Nullen und erhalten so 101001110012 als Ergebnis.

Oktal in Hexadezimal

Zu guter letzt gehen wir auch in diesem Abschnitt den Weg über das binöre Zahlensystem um eine oktale Zahl in eine Hexadezimalzahl umzurechnen. Im vorigen Abschnitt haben wir durch die Umrechnung in binär bereits die Zahl 101001110012 als Ergebnis erhalten. Dieses wandeln wir jetzt mithilfe der bereits bekannten Zuweisungstabelle für Hexadezimalzahlen um.

Als erstes nehmen wir uns auch hier wieder die bereits bekannte Tabelle zur Hand:

BinärHexadezimal
00000
00011
00102
00113
01004
01015
01106
01117
10008
10019
1010A
1011B
1100C
1101D
1110E
1111F

Jetzt zerlegen wir unsere Binärzahl in mundgerechte Häppchen und weisen den 4er-Paketen die hexadezimalen Werte zu:

Binär010100111001
Hexadezimal539

Zum Schluss setzen wir die Zahl nur wieder zusammen und erhalten so 53916 als hexadezimale Zahl.

 

Bildnachweise