Bytes, Hexadezimal und Text
Der Buchstabe A wird als 65 gespeichert, also 01000001. In UTF-8 braucht eine koreanische Silbe wie U+D55C drei Bytes.
Zuerst ein Rätsel aus dem Alltag. (Das ist ein erfundenes Beispiel.) Eine Schülerin tippt im Chat das Wort Korean, sechs Buchstaben. Ein Freund tippt dasselbe Wort in koreanischer Schrift, das sind drei Silben. Welche Nachricht ist größer? Wahrscheinlich nicht die, die du vermutest. Als UTF-8 gespeichert sind die sechs englischen Buchstaben 6 Bytes. Die drei koreanischen Silben sind 9 Bytes, je drei. RFC 3629, der Standard, der UTF-8 festlegt, nutzt genau dieses Wort als eines seiner Beispiele und schreibt seine Bytes aus: ED 95 9C EA B5 AD EC 96 B4. Zwei Dinge erklären den Unterschied. Man braucht eine kurze Schreibweise für Bytes, und man braucht die Vereinbarung, die Buchstaben in Zahlen verwandelt.
Zwei Hex-Ziffern für jedes Byte
Diese Paare aus Buchstaben und Ziffern sind Hexadezimalzahlen, kurz Hex. Lange Reihen aus 0 und 1 sind schwer zu lesen, deshalb benutzen Programmierer diese Kurzschrift. Hex hat sechzehn Ziffern: 0 bis 9, dann A bis F für zehn bis fünfzehn. Eine Hex-Ziffer steht für genau vier Bits, ein Byte sind also immer zwei Hex-Ziffern. Teile 01000001 in 0100 und 0001. Das sind 4 und 1, das Byte ist also 0x41, wobei 0x nur sagt: „Das ist Hex“. Dezimal ist es 4 × 16 + 1 = 65.
Wahrscheinlich bist du Hex schon begegnet, ohne es zu merken. Farben auf Webseiten werden oft als #RRGGBB geschrieben, je ein Byte für rotes, grünes und blaues Licht (MDN). #FF0000 ist volles Rot: 255 im ersten Byte, 0 in den beiden anderen. #FFFFFF ist Weiß. Das größte Byte, 11111111, ist 0xFF, und 0xFF = 15 × 16 + 15 = 255.
A ist 65, weil sich alle darauf geeinigt haben
Ein Computer hat keine Ahnung, was ein Buchstabe ist. Er speichert eine Zahl, und alle vereinbaren vorher, welche Zahl für welchen Buchstaben steht. Die Vereinbarung in frühen Netzwerken war ASCII, und RFC 20 legte sie 1969 für das ARPANET fest. ASCII nutzt 7 Bits und hat deshalb 128 Codes. Großes A ist 65, B ist 66 und so weiter bis Z mit 90. Kleines a ist 97. Das sind genau 32 mehr als A, ein Unterschied von einem einzigen Bit. Auch Ziffern haben Codes. Das Zeichen 0 ist 48, deshalb wird das Zeichen „7“ als 55 gespeichert und nicht als die Zahl 7.
Zum Drehen ziehen. Zum Zoomen scrollen oder mit zwei Fingern ziehen.
Warum eine koreanische Silbe drei Bytes braucht
128 Codes reichen locker für Englisch, aber bei Weitem nicht für Koreanisch, Arabisch, Chinesisch oder Emojis. Unicode gibt jedem Zeichen der Schriftsysteme der Welt eine eigene Nummer, den Codepunkt, bis U+10FFFF. UTF-8 (RFC 3629) ist der häufigste Weg, diese Nummern in Bytes zu verwandeln, mit einem bis vier Bytes pro Zeichen. Die 128 ASCII-Zeichen behalten ihre alten Ein-Byte-Codes, deshalb ist reiner englischer Text in ASCII und UTF-8 identisch. Die Tabelle im RFC stellt jeden Codepunkt von U+0800 bis U+FFFF in die Drei-Byte-Zeile, und die koreanischen Silben liegen in diesem Bereich. Ein é mit Akzent braucht zwei Bytes, eine koreanische Silbe wie U+D55C drei und ein Emoji wie 😀 vier. Das erste Byte kündigt sogar die Länge an. ED ist 11101101, und seine drei führenden 1-Bits sagen, dass dieses Zeichen drei Bytes lang ist.
| Zeichen | Codepunkt | UTF-8-Bytes (Hex) | Bytes |
|---|---|---|---|
| A | U+0041 | 41 | 1 |
| a | U+0061 | 61 | 1 |
| é | U+00E9 | C3 A9 | 2 |
| Koreanische Silbe (U+D55C) | U+D55C | ED 95 9C | 3 |
| 😀 | U+1F600 | F0 9F 98 80 | 4 |
Zeichensalat sind die richtigen Bytes, gelesen mit der falschen Vereinbarung
Eine reine Textdatei besteht aus diesen Bytes hintereinander und sonst nichts. Das Wort Hello als UTF-8 gespeichert sind fünf Bytes: 48 65 6C 6C 6F in Hex oder 72, 101, 108, 108, 111 dezimal. Die beiden l sind zweimal dasselbe Byte. Öffne diese Datei oder eine koreanische nun mit der falschen Vereinbarung, etwa einer alten koreanischen oder japanischen Kodierung statt UTF-8. Das Programm liest genau dieselben Bytes als andere Zeichen. In der Datei ist nichts kaputt, und wenn du sie wieder als UTF-8 öffnest, ist der Text zurück.
Wo die fehlenden 34 GB geblieben sind
Weil 2 hoch 10 gleich 1024 ist, also nah an 1000, hat man lange „Kilobyte“ für beides benutzt. Im Dezember 1998 beschloss die IEC getrennte Namen, und das NIST führt sie auf: 1 kB sind 1000 Bytes, aber 1 KiB, ein Kibibyte, sind 1024 Bytes; 1 MB sind 1 000 000 Bytes, aber 1 MiB sind 1 048 576 Bytes. Laufwerkshersteller zählen in Zehnerpotenzen. Ein als 500 GB verkauftes Laufwerk fasst 500 000 000 000 Bytes. Ein Betriebssystem, das in Zweierpotenzen zählt, teilt durch 1 073 741 824 und zeigt etwa 465.66 GiB. Die rund 34, die zu fehlen scheinen, waren nie da. Die beiden Zahlen benutzen einfach verschiedene Einheiten. Der Unterschied wächst mit der Einheit: Ein KiB ist 2.4 % größer als ein kB, ein GiB etwa 7.4 % größer als ein GB.
- „1 KB sind überall genau 1000 Bytes.“ Laut Standard bedeutet kB 1000 Bytes, und 1024 Bytes sind ein KiB. In der Praxis werden die alten Namen noch für beides benutzt. Das NIST merkt an, dass Speicherhersteller mit einem Megabyte meist 2²⁰ Bytes meinen, Laufwerkshersteller dagegen 1 000 000, und dass die alte „1.44 MB“-Diskette ein drittes Megabyte mit 1 024 000 Bytes benutzte. Wenn es auf die genaue Größe ankommt, achte auf das i: KiB, MiB, GiB.
- „Meinem 500-GB-Laufwerk fehlten bei Lieferung 34 GB.“ 500 000 000 000 Bytes ÷ 1 073 741 824 ≈ 465.66 GiB. Dieselben Bytes, andere Einheit. 500 − 465.66 ≈ 34.34, und dieser Unterschied sind die „fehlenden“ 34.
- „Ein Zeichen ist immer ein Byte.“ In UTF-8 gilt das nur für die 128 ASCII-Zeichen. é braucht 2 Bytes, eine koreanische Silbe 3 und 😀 4, deshalb füllt sich eine in Bytes gezählte Grenze mit koreanischem Text etwa dreimal so schnell wie mit englischem.
- „Das Zeichen 7 wird als die Zahl 7 gespeichert.“ Das Zeichen „7“ hat den Code 55, also 00110111. Ein Programm, das „7“ aus einem Text liest, muss es erst in die Zahl 7 umwandeln, bevor es damit rechnen kann.
- Was ist 0x41 als Dezimalzahl?
- Was ist 0xFF als Dezimalzahl?
- Für wie viele Bits steht eine Hex-Ziffer?
- A ist in ASCII 65. Welche Zahl ist C?
- Um wie viel ist der Code für a größer als der Code für A?
- Wie viele Codes hat 7-Bit-ASCII?
- Wie viele Bytes braucht die koreanische Silbe U+D55C in UTF-8?
- Welches Zeichen wird als 01000010 gespeichert?
- B
- A
- b
- 2
- Wie viele Bytes hat 1 MiB?
- Ein Laufwerk fasst 500 000 000 000 Bytes. Wie viele GiB sind das ungefähr? (eine Nachkommastelle)
- Eine Hex-Ziffer = 4 Bits; ein Byte = zwei Hex-Ziffern (0x00 bis 0xFF).
- ASCII: A = 65, a = 97, 0 = 48; 128 Codes in 7 Bits.
- UTF-8 nutzt 1 bis 4 Bytes pro Zeichen; ASCII-Text bleibt unverändert.
- 1 kB = 1000 B, 1 KiB = 1024 B; 1 MiB = 1 048 576 B.
Quellen zu diesem Kurs (9)
- (checked 2026-10-17; reordered 2026-10-19: standards first, then official documentation, then the teaching model and calculations, history sources last)
- Standards: NIST, "Prefixes for binary multiples" (physics.nist.gov/cuu/Units/binary.html: IEC approved kibi, mebi, gibi in December 1998; 1 B = 8 bit; 1 MiB = 1 048 576 B; 1 MB = 1 000 000 B; 1 GiB = 1 073 741 824 B; historical note: memory makers usually mean 2²⁰ bytes by megabyte, storage makers 1 000 000, and the "1.44 MB" diskette uses a megabyte of 1 024 000 bytes)
- IETF RFC 20 "ASCII format for Network Interchange" (1969, 7-bit codes, A = 65, a = 97, 0 = 48)
- IETF RFC 3629 "UTF-8, a transformation format of ISO 10646" (2003: 1 to 4 octets per character, ASCII unchanged, code points up to U+10FFFF, U+0800 to U+FFFF take three octets, "the first octet of a multi-octet sequence indicates the number of octets", example U+D55C U+AD6D U+C5B4 = ED 95 9C EA B5 AD EC 96 B4)
- Official documentation: MDN Web Docs, "<color>" (hexadecimal colour notation #RRGGBB)
- Intel, "Intel Chips" timeline poster (2012: Intel 4004 of 1971 with 2,300 transistors; 2nd generation Core 2010 with 1.16 billion)
- Claude E. Shannon, "A Symbolic Analysis of Relay and Switching Circuits", Transactions of the AIEE vol. 57 (1938)
- abstract of his MIT master's thesis. Computer History Museum, The Silicon Engine, "1947: Invention of the Point-Contact Transistor" (Bardeen and Brattain, December 1947, germanium)
- John von Neumann, "First Draft of a Report on the EDVAC" (30 June 1945, Moore School, reprinted in IEEE Annals of the History of Computing 15:4, 1993).
Abgerufen: 2026-10-17