Basissysteme wie das Binär- und das Hexadezimalsystem erscheinen auf den ersten Blick etwas seltsam. Der Schlüssel liegt darin zu verstehen, wie die verschiedenen Systeme wie ein Kilometerzähler „ticken“, wenn sie voll sind. Die Basis 10, unser Dezimalsystem, „tickt um“, wenn es 10 Elemente erhält und eine neue Ziffer erzeugt. Wir warten 60 Sekunden, bevor wir zu einer neuen Minute „überlaufen“. Hexadezimal- und Binärzahlen sind ähnlich, ticken aber alle 16 bzw. 2 Ziffern um.
Versuchen Sie hier, Zahlen in Hexadezimal- und Binärzahlen umzuwandeln:
- Way back when: Einzahlige Zahlen
- Die Römer
- Geben Sie jeder Zahl einen Namen
- Nutzen Sie Ihre Position
- Unsere Wahl der Basis 10
- Null eingeben
- Betrachtet man andere Grundlagen
- Versuch es mit der Basis 16
- Kurzer Rückblick
- Die wunderbare Welt des Binärsystems
- Weitere Beispiele für Basen
- Teilende Gedanken
- Weitere Beiträge in dieser Serie
Way back when: Einzahlige Zahlen
Vor langer Zeit gab es noch keine Basissysteme! Es ging bergauf und bergab, durch den Schnee und die glühende Hitze. Wenn man 1 zählen wollte, schrieb man:
l
Wenn man 5 wollte, schrieb man
lllll
Und klar, 1 + 5 = 6
l + lllll = llllll
Das ist die einfachste Art des Zählens.
Die Römer
In römischen Zahlen war zwei eins, zweimal. Drei war eins, dreimal:
one = Itwo = IIthree = III
Sie beschlossen jedoch, dass sie es besser machen konnten als die alte Tradition der Linien im Sand. Für fünf könnten wir V verwenden, um lllll darzustellen und erhielten etwas wie
l + V = Vl
Nicht schlecht, oder? Und natürlich gibt es noch viele weitere Symbole (L, C, M usw.), die man verwenden kann.
Der springende Punkt ist, dass V und lllll zwei Möglichkeiten sind, die Zahl 5 zu kodieren.
Geben Sie jeder Zahl einen Namen
Ein weiterer Durchbruch war die Erkenntnis, dass jede Zahl ein eigenständiges Konzept sein kann. Anstatt die Drei als eine Reihe von Einsen darzustellen, sollte man ihr ein eigenes Symbol geben: „3″. Wenn man dies von eins bis neun macht, erhält man die Symbole:
1 2 3 4 5 6 7 8 9
Die Römer waren nahe dran, so nahe dran, aber sie gaben nur 5, 10, 50, 100, 1000 usw. ein eigenes Symbol.
Nutzen Sie Ihre Position
Nun kann man natürlich nicht jeder Zahl ein eigenes Symbol geben. Es sind einfach zu viele.
Aber beachte eine Erkenntnis über die römischen Zahlen: Sie verwenden die Position der Symbole, um die Bedeutung anzugeben.
IV bedeutet „ziehe 1 von 5 ab″
und VI bedeutet „addiere 1 zu 5″.
In unserem Zahlensystem verwenden wir die Position auf ähnliche Weise. Wir addieren immer und subtrahieren nie. Und jede Position ist 10 mehr als die davor.
Unsere Wahl der Basis 10
Warum haben wir uns entschieden, jedes Mal mit 10 zu multiplizieren? Höchstwahrscheinlich, weil wir 10 Finger haben.
Ein Punkt, den man beachten sollte, ist, dass man genug Ziffern braucht, um sich bis zur nächsten Zahl „aufzufüllen“. Lassen Sie mich das demonstrieren.
Wenn wir den Kilometerzähler sozusagen alle 10 umdrehen wollen, brauchen wir Symbole für die Zahlen eins bis neun; wir haben die Zehn noch nicht erreicht. Stellen Sie sich die Zahlen als langsam aufwärts tickend vor – an welchem Punkt drehen Sie die nächste Einheit um und fangen bei Null an?
Null eingeben
Und was passiert, wenn wir zehn erreichen? Wie zeigen wir, dass wir genau eine „Zehn“ wollen und nichts in der „Einser“-Spalte?
Wir benutzen die Null, die Zahl, die es nicht gibt. Sie ist ein Platzhalter, eine Leerstelle, ein Leerzeichen und noch vieles mehr. Es genügt zu sagen, dass die Null eine der größten Erfindungen aller Zeiten ist.
Die Null ermöglicht es uns, einen leeren Platzhalter zu haben, etwas, das die Römer nicht hatten. Sieh nur, wie unhandlich ihre Zahlen ohne sie sind.
George Orwells berühmter Roman „1984″ würde „MCMLXXXIV“ heißen! Das geht einem doch leicht über die Lippen, oder?
Betrachtet man andere Grundlagen
Erinnert euch daran, dass wir uns entschieden haben, unseren Kilometerzähler alle zehn Jahre zu überschlagen. Unsere Zählung sieht folgendermaßen aus:
123456789 (uh oh, I'm getting full!)10 (ticked over – start a new digit)
Was wäre, wenn wir bei 60 weiterzählen würden, wie wir es bei Sekunden und Minuten tun?
1 second2345…58591:00 (60 seconds aka 1 minute. We've started a new digit.)
So weit alles in Ordnung, oder? Beachten Sie, dass der Doppelpunkt (:) anzeigt, dass wir bei einer neuen „Ziffer“ sind. Zur Basis 10 kann jede Ziffer für sich stehen.
Versuch es mit der Basis 16
Wenn wir die Basis 16 wollen, könnten wir etwas Ähnliches machen:
123456789101112131415 (we're getting full)1:00 (16 – we've started a new digit)
Wir wollen aber keine hexadezimalen Zahlen mit der Doppelpunktschreibweise schreiben (auch wenn wir das könnten). Wir würden lieber separate Symbole für 10-15 erfinden, damit wir einfach Zahlen schreiben können, wie wir es gewohnt sind. Wir haben keine Zahlen mehr (1-9 sind schon benutzt, mit 0 als Platzhalter), also brauchen wir ein paar andere Symbole. Wir könnten einige verschnörkelte Linien oder andere Formen verwenden, aber es ist üblich, Buchstaben im römischen Stil zu verwenden. So wie 5 zu V wurde, verwenden Programmierer die Buchstaben A-F, um genügend Ziffern bis 16 zu erhalten. Das heißt,
123456789A (10 – we're using the symbol "A")B (11)C (12)D (13)E (14)F (15 – uh oh, we're getting full)10 (16 – we start a new digit)
Aha! Jetzt können wir eine Ziffer pro „Stelle“ verwenden, und wir wissen, dass 10 tatsächlich bedeutet, dass wir einmal „über 16″ gegangen sind.
20 bedeutet, dass wir zweimal über 16 gegangen sind (32).
25 bedeutet, dass wir zweimal über 16 gegangen sind (was uns 32 gibt) und eine zusätzliche 5 gegangen sind. Die Summe ist 32 + 5 = 37.
Kurzer Rückblick
Bist du dabei? Das ist doch ziemlich cool, oder? Wir können in jedem System zählen, das wir wollen. Beachte auch, dass die Basis 16 „platzsparender“ ist, da wir eine Zahl wie 11 in einer einzigen Ziffer schreiben können: B.
Die Basis 16 unterscheidet sich eigentlich gar nicht so sehr von der Basis 10, wir brauchen nur länger, um sie auszufüllen.
Die wunderbare Welt des Binärsystems
Wir haben schon viele Basissysteme kennengelernt, von den allzu einfachen unären über die unübersichtlichen römischen Ziffern bis hin zur beständigen Basis 10 und der kompakten Basis 16.
Was ist so toll am Binärsystem? Um die Dinge einfach zu halten, ist es das einfachste Zahlensystem, das das Konzept des „Weiterlaufens“ hat. Das unäre System, bei dem wir einfach 1, 11, 111 … schreiben, ist unendlich. Das binäre System mit zwei Optionen (1 und 0) sieht so aus:
1: 12: 10 (we're full – tick over)3: 114: 100 (we're full again – tick over)5: 1016: 1107: 1118: 1000 (tick over again)…
und so weiter.
Da das binäre System so einfach ist, lässt es sich sehr leicht in Hardware einbauen. Man braucht nur Dinge, die ein- oder ausgeschaltet werden können (die 1 und 0 darstellen), und nicht Dinge, die 10 mögliche Zustände haben (um Dezimalzahlen darzustellen).
Da es so einfach ist, ist Binär auch resistent gegen Fehler. Wenn dein Signal „teilweise an“ ist (sagen wir 0,4), kannst du davon ausgehen, dass das eine Null ist. Und wenn es größtenteils an ist (z. B. 0,8), können Sie davon ausgehen, dass es sich um eine 1 handelt. Wenn Sie ein System mit 10 möglichen Zuständen verwenden, ist es schwer zu sagen, wann ein Fehler aufgetreten ist. Das ist ein Grund, warum digitale Signale so unempfindlich gegen Rauschen sind.
Weitere Beispiele für Basen
Wir verwenden ständig andere Basen, sogar dynamisch wechselnde Basen. Normalerweise denken wir nicht auf diese Weise darüber nach:
Stunden, Minuten, Sekunden: 1:32:04
- Wir wissen, dass dies 1 Stunde, 32 Minuten und 4 Sekunden sind. In Sekunden ist das 16060 + 32*60 + 4.
Fuß und Zoll: 3′ 5″
- Das sind 3 Fuß, 5 Zoll oder 3 * 12 + 5 Zoll.
Pfunde und Unzen: 8 lbs, 5 oz
- Da ein Pfund 16 oz sind, ist das 8 * 16 + 5 oz. Wir haben die ganze Zeit ein Zahlensystem zur Basis 16 verwendet!
Teilende Gedanken
„10″ in jedem Zahlensystem gibt die Basis an und bedeutet, dass wir einmal übergetreten sind. 10 in binärer Form bedeutet zwei, 10 in dezimaler Form zehn und 10 in hexadezimaler Form sechzehn.
Wie kann man diese Zahlen auseinanderhalten? Programmierer schreiben oft „0b“ vor die Binärzahlen. So ist 2 im Binärformat
0b10
Gleichermaßen wird 0x vor Hex-Zahlen geschrieben. 16 in Hexadezimal ist also:
0×10
Wenn keine Symbole (0b oder 0x) vorangestellt sind, nehmen wir an, dass es sich um die Basis 10 handelt, eine normale Zahl.
Nun geh und genieße dein neues Wissen!
Weitere Beiträge in dieser Serie
- Zahlensysteme und Basen
- Die Kurzanleitung zu GUIDs
- Die schnelle inverse Quadratwurzel von Quake verstehen
- Eine einfache Einführung in Computer Netzwerke
- Vertauschen von zwei Variablen mit XOR
- Verstehen von Big und Little Endian Byte Order
- Unicode und Sie
- Ein kleiner Exkurs über binäre Dateiformate
- Sortieralgorithmen