====== Das Hexadezimalsystem ====== Das Binärsystem hast du nun schon kennengelernt. Damit rechnen Computer, aber für uns Menschen ist es praktisch unmöglich, damit größere Datenmengen zu "analysieren". In einem riesigen Wust aus 0ern und 1ern verlieren wir einfach den Durchblick. Manchmal möchte man aber trotzdem als Mensch einen größere Menge an //Binärdaten// analysieren, die keinen direkt lesbaren Text darstellen. Dazu wendet man ein anderes Zahlensystem an, das Hexadezimalsystem. Dessen Haupt-Vorteil wirst du später verstehen. ==== Wiederholung: Aufbau des Binärsystems ==== Wenn man das Binärsystem verstanden hat, dann versteht man auch sehr schnell das Hexadezimalsystem. ^ Wert als 2er-Potenz | $2^4$ | $2^3$ | $2^2$ | $2^1$ | $2^0$ | ^ Wert als 2er-Potenz | 16 | 8 | 4 | 2 | 1 | ^ Beispiel-Binärzahl | 1 | 0 | 1 | 1 | 0 | Daraus ergibt sich die Zahl \begin{alignat}{3} 10110_2 &= \underline{1 * 2^4} + 0 * 2^3 &&+ \underline{1 * 2^2} &&+ \underline{1 * 2^1} + 0 * 2^0\\ &= 1 * 16 &&+ 1 * 4 &&+ 1 * 2\\ &= 22_{10} \end{alignat} Die wesentlichen Eigenschaften für das Binärsystem (**Basis __2__**) lassen sich wie folgt zusammenfassen: * Jede Stelle besitzt den Wert $Basis^{Stelle}$, wobei Basis in diesem Fall 2 ist und die Stelle rechts mit 0 beginnt und nach links hochzählt. * Es sind pro Stelle nur die Ziffern 0 bis "Basis-1" erlaubt, hier also 0 und 1. ==== Das Hexadezimalsystem zur Basis 16 ==== Das Hexadezimalsystem hat die Basis 16 (von griech. hexa „sechs“ und lat. decem „zehn“). Damit muss es nun offenbar die folgenden Eigenschaften haben: * Jede Stelle besitzt den Wert $16^{Stelle}$, wobei die Stelle rechts mit 0 beginnt und nach links hochzählt. * Es sind pro Stelle nur die **Ziffern** 0 bis inkl. 15 erlaubt. Moment, Ziffern? 15 besteht aber bereits aus zwei Ziffern! Daher nutzt man einen Trick. Bis inkl. der 9 wird alles normal dargestellt, danach würde jede Stelle mit 10, 11, ... aber zwei Ziffern verschlingen, was nicht erlaubt ist. Stattdessen beginnt man dann mit dem Buchstaben A für die 10, B für die 11, C für die 12, ... bis F für die 15. ^ Wert | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | ^ Darstellung im Hexadezimalsystem | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | Damit lässt sich z. B. die Hexadezimalzahl $142AD_{16}$ folgendermaßen ins Dezimalsystem umrechnen: ^ Wert als 16er-Potenz | $16^4$ | $16^3$ | $16^2$ | $16^1$ | $16^0$ | ^ Wert als 16er-Potenz | 65536 | 4096 | 256 | 16 | 1 | ^ Beispiel-Binärzahl | 1 | 4 | 2 | A | D | \begin{alignat*}{5} 142AD_{16} &= 1 * 16^4 &&+ 4 * 16^3 &&+ 2 * 16^2 &&+ \underline{10} * 16^1 &&+ \underline{13} * 16^0\\ &= 1 * 65536 &&+ 4 * 4096 &&+ 2 * 256 &&+ 10 * 16 &&+ 13 * 1\\ &= 82605_{10} \end{alignat*} {{:aufgabe.png?nolink |}} === (A1) Hexadezimal zu Dezimal === Übersetze die folgenden Hex-Zahlen ins Dezimalsystem:\\ $4_{16}$, $16_{16}$, $C4_{16}$, $5D0_{16}$, $AFFE_{16}$ ==== Umwandlung von Dezimal zu Hex ==== Die Umwandlung vom Hexadezimal- ins Dezimalsystem läuft genauso wie bei der Umwandlung von Dezimal zum Binärsystem: Wir teilen ganzzahlig durch die Basis und betrachten den Rest! Wandle die Zahl $12262_{10}$ ins Hexadezimalsystem um: \begin{alignat}{3} 12262 : 16 &= 766 \quad &&Rest: 6 \quad &&\rightarrow Ziffer: 6\\ 766 : 16 &= 47 \quad &&Rest: 14 \quad &&\rightarrow Ziffer: E\\ 47 : 16 &= 2 \quad &&Rest: 15 \quad &&\rightarrow Ziffer: F\\ 2 : 16 &= 0 \quad &&Rest: 2 \quad &&\rightarrow Ziffer: 2 \end{alignat} **Achtung:** Die "Ergebnis-Ziffern" des Rests muss man wieder von rechts nach links aufschreiben, bzw. von unten nach oben lesen. Das Ergebnis lautet also **$12262_{10} = 2FE6_{16}$**. {{:aufgabe.png?nolink |}} === (A2) Dezimal zu Hexadezimal === Übersetze die folgenden Dezimalzahlen ins Hex-System (nutze im Zweifelsfall einen Taschenrechner):\\ 13, 30, 95, 162, 1820 ==== Umwandlung von Binär zu Hexadezimal ==== Mit einer Hex-Ziffer kann man 16 verschiedene Zahlen darstellen. Um im Binärsystem dieselbe Menge an verschiedenen Zahlen darzustellen benötigt man exakt 4 Binärziffern. Man kann also immer 4 Binärziffern zu einer Hex-Ziffer zusammenfassen. \begin{alignat}{2} &\underbrace{1101}_{13 = D}\ \underbrace{0110}_{6} \qquad\qquad\qquad && \underbrace{1001}_{9}\ \underbrace{1100}_{C}\\ &\rightarrow 1101\ 0110_2 = D6_{16} \qquad\qquad\qquad && \rightarrow 1001\ 1100_2 = 9C_{16} \end{alignat} Diese Eigenschaft macht das Hexadzimalsystem für uns Informatiker so interessant! Die wichtigste Datenmenge ist bekanntlich das Byte, welches aus 8 Bit besteht. Anstatt nun ganz viele 0er und 1er zu analysieren, die jeweils in 8er-Gruppen zusammengefasst sind, ist es einfacher, Hex-Ziffern in 2er-Gruppen zu analysieren. ^ Binär ^ Hexadezimal ^ | 01101000 01100001 01101100 01101100 01101111 | 68 61 6c 6c 6f | {{:aufgabe.png?nolink |}} === (A3) Binär zu Hexadezimal === Übersetze die folgenden Binärzahlen ins Hex-System: * $0011\ 0110_2$, $1111\ 1001_2$, $1010\ 0101_2$, * Achtung, jetzt wird es kniffliger: Wie musst du die folgenden Bits zu 4er-Gruppen zusammenfassen? $100110_2$, $11011010111_2$ ==== Hexadezimalzahlen addieren ==== Schau dir die nachfolgende Rechnung an und vollziehe sie nach. {{ :faecher:informatik:mittelstufe:daten_codierung:hexadezimalsystem:hex_addieren.png?150 |}} {{:aufgabe.png?nolink |}} === (A4) Führe folgende Rechnungen durch und gib die Ergebnisse als Hexadezimalzahlen an. === * $AB_{16} + CD_{16}$ * $D3_{16} + AE7_{16}$ ==== KA-Vorbereitung: Kontrolliere dich selbst! ==== Erstelle eigene Aufgaben zur Umwandlung von einem Zahlensysteme zu einem anderen. Nutze anschließend [[https://tools.info-bw.de/zahlensysteme/|dieses Tool]], um dein Ergebnis zu kontrollieren - dort wird sogar eine Erklärung der Umwandlung angezeigt.