Dieser Artikel erläutert das Byte in der Informationstechnik. Für weitere Bedeutungen siehe Byte (Begriffsklärung). Das Byte ([baɪt]; wohl gebildet zu „Bit“)[1] ist eine Maßeinheit der Digitaltechnik und der Informatik, welches meist für eine Folge aus 8 Bit steht. Historisch gesehen war ein Byte die Anzahl der Bits zur Kodierung eines einzelnen Schriftzeichens im jeweiligen Computersystem und daher das kleinste adressierbare Element in vielen Rechnerarchitekturen. Um ausdrücklich auf eine Anzahl von 8 Bit hinzuweisen, wird auch die Bezeichnung Oktett (in Frankreich octet) verwendet – die früher dafür ebenfalls gängige Bezeichnung Oktade ist hingegen nicht mehr geläufig. Was genau ein Byte bezeichnet, wird je nach Anwendungsgebiet etwas unterschiedlich definiert. Der Begriff kann stehen für:
Bei den meisten heutigen Rechnern fallen diese Definitionen (kleinste adressierbare Einheit, Datentyp in Programmiersprachen, C-Datentyp) zu einer einzigen zusammen und sind dann von identischer Größe. Der Begriff „Byte“ wird aufgrund der großen Verbreitung von Systemen, die auf acht Bit (beziehungsweise Zweierpotenzvielfache davon) basieren, für die Bezeichnung einer 8 Bit breiten Größe verwendet, die in formaler Sprache (entsprechend ISO-Normen) aber korrekt Oktett (aus englisch octet) heißt. Als Maßeinheit bei Größenangaben wird in der deutschen Sprache der Begriff „Byte“ (im Sinne von 8 bit) verwendet. Bei der Übertragung kann ein Byte parallel (alle Bits gleichzeitig) oder seriell (alle Bits nacheinander) übertragen werden. Zur Sicherung der Richtigkeit werden oft Prüfbits angefügt. Bei der Übertragung größerer Mengen sind weitere Kommunikationsprotokolle möglich. So werden bei 32-Bit-Rechnern oft 32 Bits (vier Byte) gemeinsam in einem Schritt übertragen, auch wenn nur ein 8-Bit-Tupel übertragen werden muss. Das ermöglicht eine Vereinfachung der zur Berechnung erforderlichen Algorithmen und einen kleineren Befehlssatz des Computers. Wie bei anderen Maßeinheiten gibt es neben dem ausgeschriebenen Namen der Maßeinheiten jeweils auch ein Einheitenkürzel. Bei Bit und Byte sind dies:
Der ausgeschriebene Name unterliegt grundsätzlich der normalen Deklination. Aufgrund der großen Ähnlichkeit der Kürzel mit den ausgeschriebenen Einheitennamen sowie entsprechender Pluralformen in der englischen Sprache werden jedoch gelegentlich auch die Einheitenkürzel „bit“ und „byte“ mit Plural-s versehen. Das Bit ist ein Kofferwort aus den englischen Wörtern binary und digit,[4] heißt also „zweiwertige Ziffer“ – Null oder Eins. Dessen Bestandteile lassen sich auf die lateinischen Wörter digitus (Finger), den bzw. die man seit der Antike zum Zählen verwendet (vgl. Plautus: computare digitis), und lateinisch (genauer neulateinisch) binarius (zweifach), vergleiche lateinisch bis (zweimal), zurückführen. Das Byte ist zudem ein Kunstwort und wurde wohl aus dem englischen bit[1] (deutsch „[das] Bisschen“ oder „Häppchen“) und bite (zu deutsch: „[der] Bissen“ oder „Happen“) gebildet.[5] Verwendet wurde es, um eine Speichermenge oder Datenmenge zu kennzeichnen, die ausreicht, um ein Zeichen darzustellen. Der Begriff wurde im Juni 1956 von Werner Buchholz in einer frühen Designphase des IBM-7030-Stretch-Computers geprägt,[6][7][8] wobei die Schreibweise von bite zu byte geändert wurde, um zu vermeiden, dass es sich versehentlich zu bit ändere.[9] Im Original beschrieb es eine wählbare Breite von ein bis sechs Bits (damit konnten 2 6 = 64 {\displaystyle 2^{6}=64} Zustände, z. B. Zeichen, dargestellt werden) und stellte die kleinste direkt adressierbare Speichereinheit eines entsprechenden Computers dar.[10][11][12] Im August 1956 wurde die Definition auf ein bis acht Bits aufgeweitet (damit konnten dann 2 8 = 256 {\displaystyle 2^{8}=256} Zeichen dargestellt werden).[12][13][14] So konnte man die Buchstaben und gängige Sonderzeichen zum Beispiel in Quelltexten von Programmen oder anderen Texten speichern (also verschiedene Zeichen). In den 1960er Jahren wurde der sich in seiner Verwendung schnell ausbreitende ASCII definiert, welcher sieben Bits zur Kodierung eines Zeichens verwendet (das sind 2 7 = 128 {\displaystyle 2^{7}=128} Zeichen). Später wurden durch Nutzung des meist sowieso vorhandenen achten (höchstwertigen) Bits erweiterte, auf dem ASCII basierende Zeichensätze entwickelt, die auch die häufigsten internationalen Diakritika abbilden können, wie zum Beispiel die Codepage 437. In diesen erweiterten Zeichensätzen entspricht jedes Zeichen exakt einem Byte mit acht Bit, wobei die ersten 128 Zeichen exakt dem ASCII entsprechen. In den 1960er und 1970er Jahren war in Westeuropa auch die Bezeichnung Oktade geläufig, wenn speziell 8 Bit gemeint waren. Diese Bezeichnung geht möglicherweise auf den niederländischen Hersteller Philips zurück, in dessen Unterlagen zu Mainframe-Computern sich die Bezeichnung Oktade (bzw. englisch oktad[s]) regelmäßig findet.[15][16] Seit Anfang der 1970er Jahre gibt es 4-Bit-Mikroprozessoren, deren 4-Bit-Datenwörter (auch Nibbles genannt) mit hexadezimalen Ziffern dargestellt werden können. 8-Bit-Prozessoren wurden schon kurz nach der Erfindung der Programmiersprachen C und Pascal eingeführt, also Anfang der 1970er Jahre, und waren in Heimcomputern bis in die 1980er Jahre im Einsatz (bei eingebetteten Systemen auch heute noch), deren 8-Bit-Datenwörter (respektive Bytes) mit genau zwei hexadezimalen Ziffern dargestellt werden können. Seitdem hat sich die Breite der Datenwörter von Hardware von 4 über 8, 16, 32 bis heute zu 64 und 128 Bit hin immer wieder verdoppelt. Zur Unterscheidung der ursprünglichen Bedeutung als kleinste adressierbare Informationseinheit und der Bedeutung als 8-Bit-Tupel wird in der Fachliteratur (abhängig vom Fachgebiet) korrekterweise auch der Begriff Oktett für letzteres benutzt, um eine klare Trennung zu erzielen. In der elektronischen Datenverarbeitung bezeichnet man die kleinstmögliche Speichereinheit als Bit. Ein Bit kann zwei mögliche Zustände annehmen, die meist als „Null“ und „Eins“ bezeichnet werden. In vielen Programmiersprachen wird für ein einzelnes Bit der Datentyp „boolean“ (respektive „Boolean“ oder „BOOLEAN“) verwendet. Aus technischen Gründen erfolgt die tatsächliche Abbildung eines Boolean aber meist in Form eines Datenwortes („WORD“). Acht solcher Bits werden zu einer Einheit – sozusagen einem Datenpäckchen – zusammengefasst und allgemein Byte genannt. Die offizielle ISO-konforme Bezeichnung lautet dagegen Oktett: 1 Oktett = 1 Byte = 8 Bit. Viele Programmiersprachen unterstützen einen Datentyp mit dem Namen „byte“ (respektive „Byte“ oder „BYTE“), wobei zu beachten ist, dass dieser je nach Definition als ganze Zahl, als Bitmenge, als Element eines Zeichensatzes oder bei typunsicheren Programmiersprachen sogar gleichzeitig für mehrere dieser Datentypen verwendet werden kann, sodass keine Zuweisungskompatibilität mehr gegeben ist. Das Byte ist die Standardeinheit, um Speicherkapazitäten oder Datenmengen zu bezeichnen. Dazu gehören Dateigrößen, die Kapazität von permanenten Speichermedien (Festplattenlaufwerke, CDs, DVDs, Blu-ray Discs, Disketten, USB-Massenspeichergeräte usw.) und die Kapazität von vielen flüchtigen Speichern (zum Beispiel Arbeitsspeicher). Übertragungsraten (zum Beispiel die maximale Geschwindigkeit eines Internet-Anschlusses) gibt man dagegen üblicherweise auf der Basis von Bits an. → Hauptartikel: Vorsätze für Maßeinheiten Für Datenspeicher mit binärer Adressierung ergeben sich technisch Speicherkapazitäten basierend auf Zweierpotenzen (2n Byte). Da es bis 1996 keine speziellen Einheitenvorsätze für Zweierpotenzen gab, war es üblich, die eigentlich dezimalen SI-Präfixe im Zusammenhang mit Speicherkapazitäten zur Bezeichnung von Zweierpotenzen zu verwenden (mit Faktor 210 = 1024 statt 1000). Heutzutage sollten die Präfixe nur noch in Verbindung mit der dezimalen Angabe der Speichergrößen benutzt werden. Ein Beispiel:
Bei Hard Drive Disks, SSD-Laufwerken und anderen Speichermedien ist dies weit verbreitet, während die Größe von Arbeitsspeicher (RAM), Grafikspeicher und Prozessor-Cache nur binär angegeben werden kann, da die entsprechenden Systeme technisch binär arbeiten. Auch Microsoft Windows zeigt noch heute die SI-Präfixe an, obwohl es Größenangaben mit Zweierpotenzen berechnet. Vereinzelt kommen auch Mischformen vor, etwa bei der Speicherkapazität einer 3,5-Zoll-Diskette (1984):
Zu den heute empfohlenen, aber außerhalb der Unix-Welt (inkl. davon abgeleiteten Unix-artigen Systemen) nur wenig verwendeten Vorsätzen für binäre Größenangaben siehe nachfolgenden Abschnitt Binär- oder IEC-Präfixe. Binär- oder IEC-Präfixe→ Hauptartikel: Binär- oder IEC-Präfixe Um Mehrdeutigkeiten zu vermeiden, schlug die IEC 1996 neue Einheitenvorsätze vor, die nur in der binären Bedeutung verwendet werden sollten.[17] Dabei wird eine den SI-Präfixen ähnlich lautende Vorsilbe ergänzt um die Silbe „bi“, die klarstellt, dass es sich um binäre Vielfache handelt. Ein Beispiel:
Das für die SI-Präfixe zuständige Internationale Büro für Maß und Gewicht (BIPM) empfiehlt diese Schreibweise,[18] auch wenn es nicht für Byte zuständig ist, da dies keine SI-Einheit ist. Dessen ungeachtet haben sich viele Standardisierungsorganisationen dieser Empfehlung angeschlossen. Unter Unix-artigen Systemen finden sich oft die abweichenden einsilbigen großgeschriebenen Vorsätze als Abkürzungen, also z. B. K für KiB und M für MiB. VergleichVor allem weil die Speicher-Kapazitäten der Hersteller meist nur mit SI-Präfix angegeben sind, kann es gerade in Verbindung mit Microsoft-Systemen zu Verwirrung kommen. Denn Microsoft rechnet für Datengrößen immer mit Zweierpotenzen, gibt diese dann aber mit Hilfe der SI-Präfixe an. So wird also ein 128-GB-Speichermedium als 119,2 GB angezeigt, obwohl es laut IEC 119,2 GiB lauten müsste. Hinzu kommt die Verwirrung der Benutzer, dass laut Microsoft 120 GB (eigentlich 120 GiB) nicht auf ein mit 128 GB beworbenes Speichermedium passen und ein Fehler ausgegeben wird. Vergleich:
Für größere Dezimal- und Binärpräfixe wird die Unterscheidung größer, da die nominelle Differenz größer wird. Von einem Präfix zum Nächsten wird das Verhältnis von Binär zu Dezimal um einen Faktor 2 10 / 10 3 {\displaystyle 2^{10}/10^{3}} größer. So beträgt sie zwischen KiB und kB 2,4 %, zwischen TiB und TB hingegen bereits 10,0 % (Prozentangaben auf 1 Nachkommastelle gerundet). Eine anschauliche Übersicht über die möglichen Einheitenvorsätze und deren Bedeutungen bietet die Vergleichstabelle. Kapazitätsangaben bei SpeichermedienDie Hersteller von Massenspeichermedien, wie Festplatten, DVD-Rohlingen und USB-Speicher-Sticks, verwenden die Dezimal-Präfixe, wie es bei internationalen Maßeinheiten üblich ist, um die Speicherkapazität ihrer Produkte anzugeben. Daraus ergibt sich beispielsweise das Problem, dass ein mit „4,7 GB“ gekennzeichneter DVD-Rohling von Software, die entgegen dem oben genannten Standard (nämlich bei „GB“ die Zehnerpotenzen zu verwenden) die Zweierpotenzen verwendet (so handhabt es zum Beispiel der Windows-Explorer), mit dem abweichenden Wert von „4,38 GB“ (richtig wäre hier „4,38 GiB“ anzuzeigen) angezeigt wird, obwohl rund 4,7 Gigabyte (4.700.000.000 Byte) gemeint sind. Ebenso wird eine mit „1 TB“ spezifizierte Festplatte mit der scheinbar deutlich kleineren Kapazität von etwa „931 GB“ oder „0,9 TB“ erkannt (auch hier sollte eigentlich „931 GiB“, beziehungsweise „0,9 TiB“ angezeigt werden), obwohl jeweils rund 1,0 Terabyte (1.000.000.000.000 Byte) gemeint sind. Andererseits enthält ein mit „700 MB“ gekennzeichneter CD-Rohling tatsächlich 700 MiB (734.003.200 Byte), also etwa 734 MB (und sollte somit streng genommen mit „700 MiB“ ausgezeichnet werden). Die Umrechnung von Größe von Datenmengen in SI-Einheiten stellt seit mehr als 30 Jahren keinerlei Probleme mehr dar. Bei visueller Darstellung auf dem Bildschirm ist der Unterschied im Rechenaufwand irrelevant, ob man durch 1000 (Division) oder 1024 (Arithmetisches Schieben) teilt. Für die weitere Umwandlung in eine Dezimal-Zeichenkette sind ohnehin Divisionen durch 10 notwendig oder man müsste „2C9 MB free“ anzeigen. Massenspeicher mit vorgeschalter komplexer Firmware lassen sich in praktisch beliebig fein abgestufter Größe herstellen, dort hat sich die Herstellung in glatten, gut vermarktbaren Größen durchgesetzt. RAM-Hauptspeicher und Cache-Speicher von CPUs, auf die in ihrer ziemlich ursprünglichen Form zugegriffen wird, werden als glatte Werte mit Binärpräfixen angegeben, SI-Präfixe wären hier hochgradig unpraktisch. Für Kunden ist dessen genaue Größe meist irrelevant, da er mit diesen Größen selten direkt in Kontakt kommt. Apples macOS benutzt ab Version Mac OS X Snow Leopard (10.6)[19] einheitlich Dezimalpräfixe nur in dezimaler Bedeutung. KDE folgt dem IEC-Standard und lässt dem Anwender die Wahl zwischen binärer und dezimaler Angabe. Für Linux-Distributionen mit anderen Desktopumgebungen, wie zum Beispiel Ubuntu ab Version 11.04,[20] gibt es klare Richtlinien, wie Anwendungen Datenmengen angeben sollen; hier findet man beide Angaben, wobei die Binärpräfixe überwiegen. Unix-Shells nutzen normalerweise Datenblöcke als Einheit. Optional wird auch eine lesbarere Darstellungsform, human readable bezeichnet, angeboten, normalerweise die binäre Einheit, wobei jedoch abweichend von der IEC-Vorgabe nur die Vorsätze der Maßeinheiten in Großbuchstaben als Einheit angegeben werden, also K für KiB, M für MiB usw. Es gibt jedoch auch oft die Möglichkeit, SI-Einheiten zu wählen, dann in der korrekten, jedoch großgeschriebenen Einheit, also KB, MB usw. Vergleichstabelle
Wiktionary: Byte – Bedeutungserklärungen, Wortherkunft, Synonyme, Übersetzungen
Page 2Unter 32-Bit-Architektur versteht man in der EDV eine Prozessorarchitektur, deren Verarbeitungsbreite 32 Bit beträgt. Prozessoren, die eine 32-Bit-Architektur verwenden, werden häufig auch als „32-Bit-Prozessoren“ bezeichnet. Analog dazu werden auch Computerprogramme, die auf eine solche Architektur ausgelegt sind, mit dem Attribut 32-Bit versehen (z. B. „32-Bit-Betriebssystem“).[1]
… sowie diverse weitere Designs. Vereinfacht dargestellt bedeutet 32 Bit, dass die Prozessoren durch ihr ALU-Design so ausgelegt sind, dass zwei 32-Bit-Zahlen (also 4 Byte) gleichzeitig verarbeitet werden können (beispielsweise zwei 4-Byte-Zahlen addieren).[2] Das schließt die externe und interne Gestaltung von Datenbus und die Breite des Registersatzes mit ein. Dies gilt analog für die gängigen Adressierungs-Arten, wobei die Bitbreite der Recheneinheit sich grundsätzlich von der der Adresseinheit[3] unterscheiden kann (wie etwa auch bei 64-Bit-CPUs). Die Vorteile von höherbittigen CPUs liegen in der einfacheren Berechnung größerer Integer-Werte (durch die breitere ALU), was zum Beispiel Vorteile bei Verschlüsselungsalgorithmen, grafischen Berechnungen (zum Beispiel Festkommaarithmetik für Computerspiele), 32-Bit-Dateisystemen oder Multimediaformaten (MPEG-2, MP3) mit sich bringt. Auch bringt die Erweiterung zu 32 Bit die Möglichkeit mit, bis zu 4 Gigabyte Arbeitsspeicher zu arbeiten, was zum Vergleich zu 16-Bit, welches nur 16 Megabyte verarbeiten kann, eine enorme Verbesserung darstellte.[4] Ohne speziell angepasste Betriebssysteme kann allerdings in der Regel kein großer Vorteil aus dem Wechsel von 16-Bit- auf 32-Bit-CPUs gezogen werden. Ähnlich wie bei SIMD- oder AltiVec-Erweiterungen ist also auch für 32-Bit-Systeme gewöhnlich speziell angepasste Software nötig.[5] Allerdings verfügt nicht jedes System mit 32 Bit breitem Datenpfad auch über einen 32 Bit breiten Adresspfad, also einen 4-GiB-Adressraum. Bei älteren IBM-Großrechnern (System/360 und System/370) wurden nur 24 Bit zur Adressierung verwendet (16-MiB-Adressraum).[6] Da das überzählige Byte von Betriebssystem und Anwendungsprogrammen für Flagbits genutzt wurde, war der Übergang zur 31-Bit-Adressierung (2-GiB-Adressraum) mit nur noch einem Flagbit komplex. In einigen Systemen ist der Adresspfad schmaler oder größer als 32 Bit. Seit dem Pentium Pro können z. B. die x86er CPUs mit 36 Bit adressieren, was einem Adressraum von 64 GiB entspricht (Physikalische Adresserweiterung). Unter der Programmiersprache C schlägt sich die Anzahl der Bits insbesondere bei der Größe der Datentypen void*, int und manchmal auch bei long, sowie deren vorzeichenlosen Pendants, nieder. Mit der Verbreitung von 32-Bit-Architekturen hat man hierbei in der Regel die drei Typen gleichermaßen auf die Breite von 32 Bit gesetzt, so dass Daten von Int-Typ, Long-Typ und Zeiger-Typ gleich sind. Dieses nennt man abgekürzt ILP32. Zur Abwärtskompatibilität mit der 16-Bit-Architektur, die meist als IP16 ausgeführt wurde, hatte man teils auch den Int-Typ bei 16-Bit gelassen, genannt LP32, oder den Long-Typ auf doppelte Breite von 64-Bit gesetzt, genannt IP32.[7] Die ersten Versionen von DOS/Windows und Mac-OS arbeiteten mit jener LP32 und 16-Bit „int“, während frühe Ultrix-Versionen mit IP32 und 64-Bit „long“ arbeiteten. Derlei Programmiermodelle haben sich jedoch nicht durchgesetzt – alle heutigen unixartigen 32-Bit-Betriebssysteme drücken die 32-Bit-Architektur in einem ILP32-Typenmodell aus. Der "long long" Datentyp in C wurde erst im Zuge der Standardisierung für C99 (ab 1995) eingeführt um den Wildwuchs vorheriger Definitionen zu ersetzen.[8] Er hatte sich im Unix-Umfeld eingebürgert um Software gleichzeitig für ILP32 und LP64 der aufkommenden 64-Bit-Architekturen zu schreiben, womit "long" und "pointer" jeweils die gleiche Größe haben, und die 64-Bit Arithmetik gleichermaßen verfügbar ist. Der zugehörige 64-Bit Large File Support, um auch in ILP32 Systemen noch große Dateien verarbeiten zu können, wurde in Single UNIX Specification Version 2 (UNIX 98) eingeführt,[9] basierend auf dem herstellerübergreifenden „Large File Summit“ von 1996.[10]
Prozessorarchitekturen
|