Oktale und hexadezimale Werte
Du möchtest wissen, was oktale und hexadezimale Zahlen sind? Im Folgenden erklären wir dir, was es genauer mit diesen Zahlen auf sich hat, wann sie verwendet werden und wie du sie darstellen kannst.
Inhaltsübersicht
Drei verschieden Basen: Binärzahlen, oktale Zahlen und hexadezimale Zahlen
Zu Beginn solltest du erst einmal wissen, dass es drei Basen gibt, die wichtig für die Informatik sind: Die zwei, die acht und die sechzehn. Die Zahlen, die zu diesen Basen stehen, nennt man Binär-, Oktal- und Hexadezimalzahlen.
Die Binärzahlen sind auf niedrigstem Level das, was dein PC als Bits und Bytes verarbeitet. Sie legen fest, wann Strom fließt und wann nicht. Sie sind allerdings auf einer so niedrigen Ebene, dass sie für uns, wenn wir in C programmieren, nicht mehr vordergründig sind. Deshalb spielen sie für unsere weitere Betrachtung keine Rolle.
Oktalzahlen – Darstellung in C
Stattdessen befassen wir uns mit den Oktalzahlen. Diese wurden früher, als 24-Bit Systeme noch verbreitet waren, auch zur Eingabe und Ausgabe verwendet. Das liegt daran, dass jeweils drei Byte zu einer Oktalzahl zusammengefasst werden können und die Aus- und Eingaben damit verkürzt werden konnten. Heute dienen sie stattdessen unter UNIX zur Darstellung von Datenzugriffsrechten. Außerdem finden oktale Werte noch Verwendung im Transponder von Flugzeugen.
In C müssen Oktalzahlen als solche gekennzeichnet werden, da sonst sowohl der Mensch, als auch der Compiler sie für Dezimalzahlen halten würden. Das könnte wiederum zu gravierenden Rechen- oder Programmfehlern führen. Deswegen kannst du durch Einfügen einer Null zwischen dem Vorzeichen und der eigentlichen Ziffernfolge Zahlen als oktal kennzeichnen. Die Angabe eines Vorzeichens ist dabei optional. Allerdings ist es essenziell, dass die Ziffernfolge nur Oktalziffern, also Ziffern von null bis sieben, enthält. Damit kann der Rechner dann auch klar zwischen 22 und 022 unterscheiden.
Aber wir wollen ja nicht nur Zahlen als Oktalzahlen eingeben, sondern auch ausgeben. Dazu brauchst du allerdings noch sogenannte Formatzeichen, die angeben, dass der Rechner nicht ins Dezimal-, sondern ins Oktalsystem umwandelt.
Zu genau diesem Zweck gibt es drei verschiedene Formatzeichen. Da ist zum einen %o, zum anderen %lo und %ho. Letztere dienen der Ausgabe von Zahlen, die zu groß oder zu lang für %o sind. Damit haben wir schon mal eine Basis abgehakt.
Hexadezimalzahlen umrechnen
Schauen wir uns nun das Hexadezimalsystem an. Im Gegensatz zu den Oktalzahlen sind die Hexadezimalzahlen etwas speziell, denn sie enthalten auch Buchstaben. Das liegt daran, dass wir nicht genug Ziffern haben, um null bis fünfzehn abzudecken. Also setzen wir für die Ziffern zehn bis fünfzehn die Buchstaben A bis F ein. Damit sieht eine Hexadezimalzahl unter Umständen auch mal so aus:
Wenn du dir nicht mehr sicher bist wie die Umrechnung funktioniert, siehst du sie hier nochmal ausführlich:
Ansonsten folgen die Hexadezimalzahlen aber den gleichen Regeln, wie alle anderen B-adischen Zahlen auch. In C kennzeichnen wir sie mit einer Null und einem großen X zwischen Vorzeichen und Ziffernfolge. Das Vorzeichen ist dabei wieder optional. Wichtig ist nur, dass die Ziffernfolge, die du eingibst, auch wirklich nur Ziffern der Basis 16 enthält. Ausgeben kannst du solche Zahlen natürlich auch. Das geschieht, wie bei den Oktalzahlen, durch Formatzeichen. Diese lauten: %X, %lX und %hX.
Anwendung
Aber wozu brauchst du die Zahlen jetzt überhaupt? Hexadezimalzahlen sind vielseitig einsetzbar, vor allem, da sie für uns Menschen sehr viel leichter zu verarbeiten sind als zum Beispiel Binärzahlen. Denn sie sind um einiges kürzer und damit einfacher lesbar und schneller schreibbar. Konkret verwendet der Rechner sie allerdings zur Ein- und Ausgabe. Das ist auch nur logisch. Denn heutige Datenwerte weisen meist 16, 32 oder 64 bit auf, die sich alle in sogenannte Tetraden oder auch Nibbles aufgliedern lassen. Diese bestehen jeweils aus vier Binärstellen, also einem halben Byte.
Eine Tetrade kann also immer als eine Hexadezimalstelle interpretiert werden. Das Ganze sieht dann in etwa so aus: 1010 1100 1101 1100 = ACDC. Die Umrechnungen für die einzelnen Buchstaben funktioniert so:
Nun kennst du das oktale und hexadezimale Zahlensystem und bist gut vorbereitet, diese auch selbst anzuwenden.