byte
Kurz: Der kleinste ganzzahlige Datentyp in den meisten Sprachen — belegt genau 8 Bit Speicher und deckt damit nur einen sehr kleinen Wertebereich ab.
Genauer: Weil ein Byte so wenig Speicher braucht, wird der Typ vor allem dort genutzt, wo Speicherplatz bei sehr großen Datenmengen wirklich zählt (z. B. Rohdaten von Dateien oder Netzwerkverkehr), oder wenn ein Wert garantiert klein bleibt. Für normale Zählvariablen oder Berechnungen wird trotzdem meist ein größerer Ganzzahltyp verwendet, um Überläufe (der Wert passt nicht mehr in den Typ) zu vermeiden.
Im Detail
Mit 8 Bit lassen sich genau 2⁸ = 256 unterschiedliche Werte darstellen. Bei einem vorzeichenbehafteten byte (wie in Java) teilt sich dieser Bereich in negative und positive Zahlen auf: -128 bis 127. Ein vorzeichenloses Byte (wie es z. B. in C als unsigned char existiert) deckt stattdessen 0 bis 255 ab — derselbe Speicherplatz, aber andere Interpretation der Bits.
byte b = 127;
b = b + 1; // Überlauf! Ergebnis: -128, nicht 128 (das Bitmuster "kippt" um)Dieser Überlauf (Overflow) ist der Hauptgrund, warum byte für normale Zähl- oder Rechenvariablen ungeeignet ist — sobald der Wert die Grenze überschreitet, “springt” er unerwartet auf die entgegengesetzte Seite des Wertebereichs, ohne dass ein Fehler geworfen wird. Für Zählvariablen wird deshalb praktisch immer ein größerer Typ wie int verwendet, selbst wenn der tatsächliche Wertebereich klein bleibt — der zusätzliche Speicherverbrauch (typischerweise 4 statt 1 Byte) spielt bei einzelnen Variablen keine Rolle.
Wo byte dagegen wirklich Sinn ergibt:
- Rohdaten, die keine “Zahl” im eigentlichen Sinn repräsentieren, sondern einzelne Speicher-Einheiten — z. B. der Inhalt einer Bild- oder Audiodatei, ein Netzwerkpaket, oder die Ausgabe eines Hash-Algorithmus wie SHA-256.
- Große Arrays/Sammlungen, bei denen der Speicherunterschied zwischen
byte[]undint[](Faktor 4) bei Millionen von Elementen tatsächlich relevant wird. - Bit-Manipulation, wo einzelne Bits innerhalb eines Bytes gezielt gesetzt oder gelesen werden (z. B. Flags, Statusregister).
In Sprachen mit dynamischer Typisierung wie Python gibt es keinen eigenständigen byte-Typ für einzelne Zahlen — stattdessen existiert der bytes-Typ für ganze Byte-Sequenzen (Rohdaten), einzelne Zahlen sind dort immer vom generischen int-Typ, der automatisch beliebig groß werden kann.