Leitfaden zum Hexadezimalsystem
Hexadecimal System
The hexadecimal system uses 16 symbols: 0-9 and A-F (A=10, B=11, C=12, D=13, E=14, F=15). It's a shorthand for binary - each 4 bits is one hex digit. Example: 11111111₂ = FF₁₆ = 255₁₀. Used in programming and colors.
Warum Hex wichtig ist
255 binär ist 11111111 (8 Stellen). Hex FF (2 Zeichen) – für Menschen leichter zu lesen und einzugeben. Speicheradressen, RGB-Farben und Unicode-Codepunkte nutzen Hex. Farbdefinitionen in CSS: #FF0000 (Rot), #00FF00 (Grün), #0000FF (Blau).
Praktische Anwendungen
In CSS-Farben: #3498db Blau, #2ecc342 Grün. In UUID v5: 550e8400-ea29-41d3-af15-6528adf68cc2. ROM-/EEPROM-Dumps als Hex. MAC-Adressen: aa:bb:cc:dd:ee:ff. In Debuggern Speicheradressen als 0x0040A7C0.
#888 ist nicht #808080, und die CSS-Kurzform erreicht 0,02% der Farben
Hexadezimal ist kompaktes Binär: Eine Ziffer sind genau vier Bit, zwei Ziffern also ein Byte. Deshalb schreibt man eine Farbe als drei Paare. Die dreistellige CSS-Kurzform expandiert durch Verdopplung jeder Ziffer statt durch Skalierung — weshalb die meisten Farben gar keine Kurzform haben, Mittelgrau eingeschlossen.
So wird gerechnet
- Rechnet zwischen Hexadezimal, Dezimal und Binär um, wobei jede Hexziffer vier Bit entspricht.
- Verarbeitet Farbwerte, bei denen zwei Hexziffern die 256 Stufen eines Kanals ergeben.
- Macht die Ziffer-zu-Bit-Zuordnung sichtbar, denn darauf ruhen alle diese Konventionen.
1 Hexziffer = 4 Bit = 16 Werte (0–F) 2 Hexziffern = 8 Bit = 256 Werte (00–FF) #RRGGBB = 3 Kanäle × 8 Bit = 24 Bit = 16.777.216 Farben die Kurzform #RGB expandiert durch Verdopplung: #F0A → #FF00AA
Rechenbeispiel
Die volle sechsstellige Form gegen die dreistellige Kurzform.
- #RRGGBB sind 24 Bit: 16.777.216 Farben
- #RGB sind 12 Bit: 4.096 Farben
- die Kurzform deckt 0,0244% des Raums ab
- #888 expandiert zu #888888 = 136 je Kanal
- Mittelgrau ist jedoch #808080 = 128 je Kanal
#888 und #808080 unterscheiden sich in jedem Kanal um 8 Stufen, und kein dreistelliger Code ergibt #808080. Die Kurzform ist keine Abkürzung aller Farben — sie ist eine kleine Teilmenge, die sich zufällig halb so lang schreiben lässt.
Das Ergebnis lesen
- Die Expansion verdoppelt die Ziffer, sie skaliert den Bereich nicht. #A wird #AA, nicht ein proportional platzierter Wert — deshalb landet die Kurzformpalette auf 0x00, 0x11, 0x22 und so fort in Schritten von 17 und lässt alles dazwischen aus.
- Hex hält sich, weil die Abbildung auf Binär exakt und mechanisch ist. Ein Byte sind stets zwei Zeichen, die Umrechnung braucht keine Arithmetik, und nichts wird gerundet — dieselben Gründe, aus denen es für Hashes, MAC-Adressen und Speicherauszüge dient.
- Groß- und Kleinschreibung ist bei Farbwerten und in den meisten Parsern unerheblich: #FF00AA und #ff00aa sind identisch. Bei Hashes zählt sie nur, wo eine Spezifikation es sagt; Hexzeichenketten ohne Normalisierung zu vergleichen erzeugt häufig falsche Nichtübereinstimmungen.
- Das Präfix 0x kennzeichnet Hex in den meisten Programmiersprachen, # in CSS, und manche Kontexte nutzen keines. Eine nackte Folge aus Ziffern und Buchstaben ist mehrdeutig — 10 ist dezimal zehn und hexadezimal sechzehn, und die Zeichen verraten nicht, welches gemeint ist.
Häufige Fragen
- Warum werden Farben hexadezimal statt dezimal geschrieben?
- Weil jeder Kanal ein Byte ist und ein Byte exakt zwei Hexziffern. Dezimal lautet dieselbe Farbe rgb(255, 0, 170) — drei Zahlen variabler Länge mit Trennzeichen gegen sechs feste Zeichen, die sich sauber in Kanäle teilen.
- Lässt sich jede Hexfarbe kürzen?
- Nur wenn jedes Paar eine verdoppelte Ziffer ist. #FF00AA wird zu #F0A, weil sich jedes Paar wiederholt; #808080 lässt sich gar nicht kürzen, denn 80 ist keine verdoppelte Ziffer. Etwa eine von 4.096 Farben hat eine Kurzform.