„Es sind alles 1en und 0en.“ Die Leute sagen das, wenn sie einen Witz oder eine sarkastische Bemerkung machen wollen. Wenn es um das Denken von Computern geht, ist es wirklich wahr. Und auf der Hardware-Ebene ist das alles, was es gibt. Der Prozessor, der Arbeitsspeicher, die verschiedenen Speichermedien, USB-, HDMI- und Netzwerkanschlüsse sowie alles andere in diesem Handy, Tablet, Laptop oder Desktop-Computer verwendet nur 1en und 0en. Bytes sorgen für die Gruppierung der 1en und 0en. Sie sind also eine große Hilfe, um sie zu organisieren. Schauen wir uns an, wie sie das tun.
Bytes sind die Maßeinheit für Daten und Programme, die in Ihrem Computer gespeichert und verwendet werden. Obwohl es das Byte in der Computergeschichte schon lange gibt und es verschiedene Formen angenommen hat, ist seine derzeitige Länge von 8 Bit fest etabliert. Einzeln oder in benachbarten Gruppen betrachtet, sind Bytes die allgemein akzeptierte, gebräuchlichste Art und Weise, die Bits in einem Computer zu organisieren.
Was ist ein Bit? Ein Bit ist eine binäre Ziffer, d.h. es kann nur zwei Werte haben. In Computern sind die beiden Werte, die ein Bit haben kann, Null (0) und Eins (1). Das war’s, es gibt keine anderen Möglichkeiten. Ein Byte besteht lediglich aus acht binären Bits, die zusammengenommen binäre Zahlen darstellen. Durch verschiedene Kodierungsschemata können die Zahlen eine Vielzahl anderer Dinge darstellen, wie z. B. die Zeichen, mit denen wir schreiben.
Die nachstehende Tabelle zeigt ein einzelnes Big-Endian-Byte mit den einzelnen Bits dieses Bytes und ihren zugehörigen Zweierpotenzen. Alle Datenbytes sind im Big-Endian-Format. Es gibt andere Bytes, z. B. Programmcode, für die die Endian-Formatierung nicht gilt. Die dezimalen Werte jeder Zweierpotenz werden zu Referenzzwecken mit jedem Bit angezeigt. Stellen Sie sich eine Linie zwischen Bit 3 und Bit 4 vor, in der das Byte in vier Bitgruppen, so genannte Nibbles, unterteilt ist. Little-Endian ist ein sehr häufig verwendetes Byte-Format. Bleiben Sie dran, um mehr über Endians zu erfahren. Wenn Sie neugierig auf den Namen sind, machen Sie eine Suche auf (Etymologie von endian).
Ein Big-Endian Byte:
Bit0 | Bit1 | Bit2 | Bit3 | Bit4 | Bit5 | Bit6 | Bit7 | |
Potenz von 2 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 21 |
Dezimalwert | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
Jedes Nibble eines Bytes kann eine Vier-Bit-Binärzahl enthalten, wie in der folgenden Tabelle dargestellt. Wenn ein Bit auf „1“ gesetzt wird, wird diese Zweierpotenz zum Wert des Nibbles addiert. Wenn ein Bit auf „0“ gesetzt ist, wird diese Zweierpotenz nicht zum Wert des Nibbles addiert. Ein Byte, das aus zwei Nibbles besteht, kann eine zweistellige Hexadezimalzahl enthalten. Bits sind wirklich alles, was ein Computer verwenden kann. Programmierer und Ingenieure, die Computerhardware entwickeln, verwenden Hexadezimalzahlen, um den Umgang mit den Bits zu erleichtern. In der folgenden Tabelle steht das höchstwertige Bit links 20, 21, 22, 23
Ein Big-Endian Nibble:
Binär Zahl |
Hexidezimal Wert |
0000 | 0 |
0001 | 1 |
0010 | 2 |
0011 | 3 |
0100 | 4 |
0101 | 5 |
0110 | 6 |
0111 | 7 |
1000 | 8 |
1001 | 9 |
1010 | A |
1011 | B |
1100 | C |
1101 | D |
1110 | E |
1111 | F |
Ich erkläre Big-Endian beginnend mit einem Ein-Byte-Diagramm. Die längeren Linien am Ende dieses Rahmens sind die Grenzen des Bytes, so dass beim Zeichnen einer Gruppe benachbarter Bytes klar wäre, wo ein Byte aufhört und ein anderes beginnt. Die kleinen Linien unterteilen den Rahmen in einzelne Stellen, an denen jedes der acht Bits dargestellt werden kann. Die mittlere Linie in der Mitte unterteilt das Byte in zwei gleiche Vier-Bit-Stücke, die Nibbles. Auch die Nibbles haben eine lange und abwechslungsreiche Geschichte. Ich habe nie gesehen, dass sie genormt worden wären. Die gängige Meinung ist jedoch, dass Nibbles Gruppen von vier Bits sind, wie ich sie unten dargestellt habe. Alle diese Linien existieren nur, wenn Menschen Bytes zeichnen. Die Linien existieren nicht im Computer.
Das obere Nibble und das untere Nibble sind Bezeichnungen, wie sie in einem Big-Endian-Byte verwendet werden würden. In Big-Endian steht die höchstwertige Ziffer am linken Ende einer Zahl. Das Lower Nibble ist also die niedrigstwertige Hälfte der Zahl im Byte. Ebenso befindet sich das niedrigstwertige Bit auf der rechten Seite. LSBit (üblicherweise als LSB bezeichnet) steht für Least Significant Bit. Und das höchstwertige Bit befindet sich links. Das obere Nibble auf der linken Seite ist die höchstwertige Hälfte der Zahl. MSBit (üblicherweise als MSB bezeichnet) ist das höchstwertige Bit. Dies entspricht der Schreibweise von Dezimalzahlen mit der höchstwertigen Stelle links. Dies wird Big-Endian genannt, weil das „große Ende“ der Zahl zuerst kommt.
Da das Byte zwei hexadezimale Ziffern aufnehmen kann, kann ein Byte hexadezimale Zahlen zwischen 00 und FF (0 bis 255 in Dezimalzahlen) enthalten. Wenn Sie also Bytes verwenden, um die Zeichen einer für Menschen lesbaren Sprache darzustellen, geben Sie einfach jedem Zeichen, Satzzeichen usw. eine Nummer. (Dann müssen natürlich alle mit der von Ihnen erfundenen Kodierung einverstanden sein.) Dies ist nur eine Verwendung für Bytes. Bytes werden auch als Programmcode verwendet, den Ihr Computer ausführt, als Zahlen für verschiedene Daten, die Sie haben könnten, und für alles andere, was in einem Computer in der CPU, im Speicher, im Storage oder auf den verschiedenen Bussen und Schnittstellen herumschwirrt.
Wie sich herausstellt, gibt es zwei häufig verwendete Byte-Formate. Little-Endian wurde bereits in den vorherigen Beispielen verwendet. Es zeichnet sich dadurch aus, dass die höchstwertige Stelle links und die niedrigstwertige Stelle rechts steht.
Es gibt auch ein Format namens Little-Endian. Wie zu erwarten, ist es das Gegenteil von Big-Endian mit der niedrigstwertigen Ziffer auf der linken Seite und der höchstwertigen Ziffer auf der rechten Seite. Das ist das Gegenteil von dem, wie wir Dezimalzahlen schreiben. Little-Endian wird nicht für die Reihenfolge der Bits in einem Byte verwendet, sondern für die Reihenfolge der Bytes in einer größeren Struktur. Zum Beispiel: Bei einer großen Zahl, die in einem Little-Endian-Wort aus zwei Bytes enthalten ist, würde das niederwertigste Byte auf der linken Seite stehen. Wäre die Zwei-Byte-Zahl in Big-Endian, würde das höchstwertige Byte rechts stehen. Little-Endian wird nur im Zusammenhang mit langen Multi-Byte-Zahlen verwendet, um die Signifikanzreihenfolge der Bytes in der größeren Datenstruktur festzulegen.
Es gibt Gründe für die Verwendung sowohl von Big- als auch von Little-Byte-Reihenfolge, und die ausführlichen Gründe würden den Rahmen dieses Artikels sprengen. Little-Endian wird jedoch in der Regel in Mikroprozessoren verwendet. Die x86-64-Prozessoren in den meisten PCs verwenden das Little-Endian-Byteformat. Spätere Generationen verfügen jedoch über spezielle Befehle, die eine begrenzte Verwendung des Big-Endian-Formats ermöglichen. Das Big-Endian-Byte-Format wird häufig in Netzwerken und vor allem in den großen Z-Computern verwendet. Jetzt ist man nicht mehr unbedingt auf das eine oder das andere beschränkt. Die neueren ARM-Prozessoren können beide Endian-Formate verwenden. Geräte wie Mikroprozessoren, die sowohl das Big-Endian- als auch das Little-Endian-Format verwenden können, werden manchmal als Bi-Endian bezeichnet.
Nun, manchmal braucht man wirklich mehr als ein Byte, um eine Zahl zu speichern. Zu diesem Zweck gibt es längere Formate, die aus mehreren Bytes bestehen. Zum Beispiel: Die x86-64-Prozessoren haben Words, das sind 16 Bit oder 2 Bytes, die sozusagen Kopf an Kopf aneinandergereiht sind. Außerdem gibt es Double Words (32 Bits oder 4 Bytes) und Quad Words (64 Bits oder 8 Bytes). Dies sind nur Beispiele für Datenformen, die von der Prozessorhardware zur Verfügung gestellt werden.
Programmierer, die mit Sprachen arbeiten, haben viele weitere Möglichkeiten, die Bits und Bytes zu organisieren. Wenn das Programm fertig ist, wandelt ein Compiler oder ein anderer Mechanismus die Art und Weise, wie das Programm Bits und Bytes organisiert hat, in Datenformen um, mit denen die CPU-Hardware umgehen kann.