Grundlagen

Hier werden einige grundlegende Themen wie Zahlensysteme, Zeichensätze und Kodierungen behandelt.

Inhalt

Zahlensysteme
Dezimalsystem
Binärsystem
Oktalsystem
Hexadezimalsystem
Datengrößen
Bit
Nibble
Byte
Word
DWord
QWord
Endianness / Byte-Order
Intel / LSB / Little Endian
Motorola / MSB / Big Endian
Zeichensätze und Zeichenkodierungen
Arten von Zeichensätzen
Verbreitete Zeichensätze
ASCII
ANSI / 8-Bit-Zeichensätze
MS-DOS-Codepages
Windows-Codepages
ISO 8859
Unicode
UTF-8
UTF-16
Endianness / Byte Order
Byte Order Mark
Kodierungen
Konvertierung in ein anderes Zahlensystem
Base64
Quoted-Printable
URL Encoding
Datumsformate und Zeitformate
DOS-Date / DOS-Time
time_t
FileTime
Slack
File-Slack, RAM-Slack und Drive-Slack
MFT-Slack
Partition-Slack

Gefällt dir meine Webseite, meine Freeware-Programme oder Online-Tools?

Dann spende bitte per PayPal und hilf mit, den Inhalt weiterhin kostenlos anbieten zu können - jeder Betrag ist willkommen!

Lese mehr über Unterstützungs­möglichkeiten...

Zahlensysteme

Dezimalsystem

Das Dezimalsystem ist das übliche System um Zahlen darzustellen. Die Basis des Dezimalsystems ist 10 und umfasst die Ziffern 0 bis 9 zur Darstellung der Zahlen.

Binärsystem

Das Binärsystem oder auch Dualsystem wird vorwiegend in der elektronischen Datenverarbeitung eingesetzt (Basis 2). Die beiden möglichen Ziffern in einem Binärwert sind 0 und 1. Durch die Aneinanderreihung der Ziffern 0 und 1 lassen sich beliebige Zahlen ausdrücken:

ZahlBinärwert
00
11
210
311
4100
121100
641000000
12810000000
25511111111

Oktalsystem

Das Oktalsystem verwendet nur die Ziffern 0 bis 7 zur Darstellung von Zahlen (Basis 8). Die dezimale Zahl 8 ergibt somit den Oktalwert 10. Dieses System kommt hauptsächlich bei den Dateirechten in Linux-basierten Betriebssystemen und in FTP-Programmen zur Anwendung.

Hexadezimalsystem

Im Hexadezimalsystem werden die Ziffern 0 bis 9, sowie die Buchstaben A bis F zur Darstellung von Zahlen verwendet (Basis 16). Dabei entspricht "A" der Zahl 10 und "F" der Zahl 15. So lassen sich Zahlen von 0 bis 255, was einem Byte entspricht, mit einem zweistelligen Wert - von "00" bis "FF" - ausdrücken. Da eine hexadezimale Zahl nicht immer von einer dezimalen Zahl zu unterscheiden ist, wird eine hexadezimale Zahl mit vorangestelltem "0x" oder nachgestelltem "h" gekennzeichnet, zum Beispiel 0x47 oder 47h, 0x00 oder 0h.

Datengrößen

Bit

Ein Bit (engl. binary digit) ist die kleinste mögliche Einheit in der Informationsverarbeitung. Ein Bit kann nur zwei Zustände annehmen - 0 oder 1 (siehe auch Binärsystem).

Nibble

Ein Nibble besteht aus 4 Bit (ein halbes Byte). Diese Größenangabe ist allerdings kaum gebräuchlich. Ein Nibble kann mit nur einer hexadezimalen Ziffer dargestellt werden.

Byte

Ein Byte besteht aus 8 Bit und umfasst so Zahlen im Bereich von 0 bis 255.

Word

Ein Word besteht aus zwei Byte bzw. 16 Bit. Somit können in einem Word Zahlen von 0 bis 65.535 gespeichert werden. Zum Beispiel wird die DOS-Zeit (DOS-Time) in dieser Datengröße auf 2 Sekunden genau gespeichert.

DWord

Ein DWord (Double Word) umfasst vier Byte bzw. 32 Bit. Dadurch ergibt sich ein Zahlenbereich von 0 bis 4.294.967.295. In diesem Format werden neben "normalen" Zahlen auch Datums- und Zeitangaben gespeichert.

QWord

Ein QWord (Quad Word) besteht aus acht Byte bzw. 64 Bit. In dieser Datengröße werden beispielsweise Festplattenkapazitäten oder besonders genaue Zeitangaben gespeichert.

Schematische Darstellungen von Bit bis Byte und von Byte bis QWord:
BitBitBitBitBitBitBitBit
NibbleNibble
Byte
ByteByteByteByteByteByteByteByte
WordWordWordWord
DWordDWord
QWord

Endianness / Byte Order

Beim Speichern bzw. beim Auslesen von Daten ist die Reihenfolge entscheidend, wie die Daten verarbeitet werden. Dies kann von links nach rechts oder umgekehrt erfolgen. Diese Reihenfolge nennt man Endianness oder Byte Order. Man unterscheidet dabei zwei Typen, die Intel und die Motorola Byte Order.

Während DWord-Werte die eine Zahl ausdrücken meist im Intel-Format gespeichert werden, werden Positionsangaben, etwa für Datei-Offsets, normalerweise im Motorola-Format ausgedrückt.

Intel / LSB / Little Endian

Die Intel Byte Order wird auch LSB (least significant byte first) oder Little Endian genannt. Bei der Intel Byte Order steht das niederwertigste Byte an der linken Stelle und das höherwertigste Byte an der rechten Stelle. So ergibt das Word 0x0100 den Wert 1 und das Word 0x0001 den Wert 256.

Motorola / MSB / Big Endian

Die Motorola Byte Order wird auch MSB (most significant byte first) oder Big Endian genannt. Bei der Motorola Byte Order steht das niederwertigste Byte an der rechten Stelle und das höherwertigste Byte an der linken Stelle. Hier ergibt das Word 0x0001 den Wert 1 und das Word 0x0100 den Wert 256.

Zeichensätze und Zeichenkodierungen

Ein Zeichensatz legt fest, welche Zeichen verwendet werden können. Dies sind zum Beispiel Buchstaben, Zahlen, Satz- und Sonderzeichen. In einer Zeichenkodierung wird jedem Zeichen eine eigene Zahl zugewiesen, die man Zeichencode nennt. Der Zeichencode beginnt üblicherweise bei 0 (Null).

Arten von Zeichensätzen

Single Byte Character Sets (SBCS) speichern ein Zeichen in einem Byte. Beispiele sind ASCII, MS-DOS- und Windows-Codepages, sowie ISO-8859-Zeichensätze.

Multibyte Character Sets (MBCS) speichern ein Zeichen in unterschiedlich vielen Bytes. Dazu zählen unter anderem UTF-8, UTF-16 und Big5.

Andere Zeichensätze verwenden eine feste Anzahl mehrerer Bytes, wie etwa 2 Bytes bei UCS-2 bzw. UTF-32.

UTF-16 verwendet keine feste Anzahl an Bytes, sondern grundsätzlich 2 Bytes pro Zeichen, kann aber auch 4 Bytes pro Zeichen verwenden.

Verbreitete Zeichensätze

ASCII

Der ASCII-Zeichensatz enthält 128 Zeichen. Für deren Speicherung sind 7 Bit erforderlich. Das 8. Bit wird in ASCII nicht verendet. Neben diversen Sonderzeichen sind vor allen die Groß- und Kleinbuchstaben, Zahlen und Satzzeichen enthalten.

ANSI / 8-Bit-Zeichensätze

8-Bit-Zeichensätze werden auch als ANSI-Zeichensätze bezeichnet. Diese erweitern den ASCII-Zeichensatz indem sie auch das 8. Bit verwenden, wodurch insgesamt 256 Zeichen dargestellt werden können. Die zusätzlichen Zeichen werden meist für nationale Sonderzeichen und andere Symbole verwendet.

MS-DOS-Codepages
437Englisch
708Arabisch (ASMO)
720Arabisch (Microsoft)
737Griechisch
775Baltisch
850Westeuropäisch
852Mitteleuropäisch
855Kyrillisch
857Türkisch
858Westeuropäisch mit Euro
860Portugiesisch
861Isländisch
862Hebräisch
863Kanadisches Französisch
864Arabisch (IBM)
865Nordisch
866Russisch
869Griechisch
Windows-Codepages
874Thai
932Japanisch
936Vereinfachtes Chinesisch
949Koreanisch
950Traditionelles Chinesisch
1200Unicode UTF-16 LE
1201Unicode UTF-16 BE
1250Mitteleuropäisch
1251Kyrillisch
1252Westeuropäisch
1253Griechisch
1254Türkisch
1255Hebräisch
1256Arabisch
1257Baltisch
1258Vietnamesisch
12000Unicode UTF-32 LE
12001Unicode UTF-32 BE
65000Unicode UTF-7
65001Unicode UTF-8
ISO 8859
ISO 8859-1Latin-1, Westeuropäisch
ISO 8859-2Latin-2, Mitteleuropäisch
ISO 8859-3Latin-3, Südeuropäisch
ISO 8859-4Latin-4, Nordeuropäisch
ISO 8859-5Kyrillisch
ISO 8859-6Arabisch
ISO 8859-7Griechisch
ISO 8859-8Hebräisch
ISO 8859-9Latin-5, Türkisch
ISO 8859-10Latin-6, Nordisch
ISO 8859-11Thai
ISO 8859-12(nicht vergeben)
ISO 8859-13Latin-7, Baltisch
ISO 8859-14Latin-8, Keltisch
ISO 8859-15Latin-9, Westeuropäisch
ISO 8859-16Latin-10, Südosteuropäisch

Unicode

Unicode ist ein Zeichensatz, der eine variable Anzahl an Bytes pro Zeichen verwendet. Für den Unicode-Zeichensatz werden vor allem die Kodierungen UTF-8 und UTF-16 verwendet, um die Zeichen zu speichern. UTF steht dabei für Unicode Transformation Format.

UTF-8

UTF-8 verwendet eine Folge von 8-Bit-Zahlen (ein Byte) zur Speicherung der Zeichen. Die ASCII-Zeichen werden unverändert gespeichert. Dadurch benötigen Buchstaben, Zahlen und Satzzeichen bei der UTF-8-Kodierung nur jeweils ein Byte pro Zeichen. Alle andere Zeichen, wie etwa nationale Sonderzeichen und Zeichen aus anderen Schriftsystemen, benötigen zwei bis vier Bytes pro Zeichen.

In binärer Schreibweise beginnen alle 1-Byte langen Zeichen mit einer Null. Bei Zeichen mit mehreren Bytes beginnt das erste Byte mit binären Einsen, gefolgt von einer binären Null. Die Anzahl der binären Einsen entspricht der Anzahl der Bytes pro Zeichen.

Beispiele:
Umlaut-A (Ä)11000011 10000100
Euro-Zeichen (€)11100010 10000010 10101100
Teddy Bär (U+1F9F8)11110000 10011111 10100111 10111000

Wird eine mit UTF-8 gespeicherte Datei als ISO 8859-1 interpretiert, werden UTF-8-Zeichen nicht richtig dargestellt. Beispielsweise würden an Stelle der deutschen Umlaute "ä ö ü" die Zeichen "ä ö ü" angezeigt werden. Wird ein Text in ISO 8859-1 als UTF-8 angezeigt, wird für alle ungültigen Zeichen ein Fragezeichen oder das Zeichen "�" ausgegeben.

UTF-16

UTF-16 verwendet eine Folge von 16-Bit-Zahlen (zwei Bytes bzw. 1 Word) zur Speicherung der Zeichen. Alle Zeichen von U+0000 bis U+FFFF belegen 2 Bytes.

Die Zeichen U+10000 bis U+10FFFF werden in jeweils 4 Bytes gespeichert. Dabei wird vom Zeichencode die Zahl 65536 (0xFFFF) abgezogen. Die daraus entstehende 20-Bit-Zahl wird binär in zwei je 10-Bit lange Blöcke aufgeteilt. Dem ersten Block mit den 10 höherwertigen Bits wird die Bitfolge 110110 vorangestellt. Diese 16-Bit nennt man High Surrogate. Dem zweiten Block mit den 10 niederwertigen Bits wird die Bitfolge 110111 vorangestellt. Diese 16-Bit werden Low Surrogate genannt.

20 Bits (0 bis 19)
191817161514131211109876543210
1. Block / höherwertige Bits2. Block / niederwertige Bits

110110 + Bits des 1. Blocks = High Surrogate
110111 + Bits des 2. Blocks = Low Surrogate

Endianness / Byte Order

Die Byte Order (Endianness) bestimmt die Position der 8 Bit eines ASCII-Zeichens innerhalb der 16 Bit des UTF-16 Words.

Bei Big Endian (UTF-16BE) wird dem ASCII-Zeichen ein 0-Byte vorangestellt,
bei Little Endian (UTF-16LE) wird dem ASCII-Zeichen ein 0-Byte angefügt.

Das High Surrogate Word steht immer vor dem Low Surrogate Word, unabhängig von der Byte Order.

Byte Order Mark

Die Byte Order Mark (kurz BOM) steht am Beginn einer Datei und kennzeichnet die verwendete Zeichenkodierung des nachfolgenden Textes.

KodierungByte Order Mark hexadezimal
UTF-8EF BB BF
UTF-16 BEFE FF
UTF-16 LEFF FE
UTF-32 BE00 00 FE FF
UTF-32 LEFF FE 00 00

Tipp: Die Seiten "ASCII und ANSI Zeichentabelle" und "Unicode Zeichentabellen" enthalten Zeichentabellen zu ASCII-Zeichen und den wichtigsten Unicode-Zeichen.

Kodierungen

In bestimmten Situationen müssen Binärdaten in andere Zeichen umgewandelt werden. Dies kann technische Gründe, wie etwa die Datenübertragung im Internet, oder aber praktische Gründe, wie bei einem Hexadezimaleditor, haben.

Konvertierung in ein anderes Zahlensystem

Eine Kodierung ist meist nur die Konvertierung von einem Zahlensystem in ein anderes. Zum Beispiel vom einem dezimalen ASCII/ANSI Zeichencode in das hexadezimale System.

Die dezimalen Zeichencodes des Wortes "Test" würden in verschiedenen Zahlensystemen so dargestellt werden:

ZahlensystemBasisDarstellung des Wortes "Test"
Dezimal1084 101 115 116
Hexadezimal1654 65 73 74
Oktal8124 145 163 164
Binär201010100 01100101 01110011 01110100

Bei der hexadezimalen Schreibweise werden manchmal die Trennzeichen weggelassen, z.B. "54657374".

Base64

Base64 (B64) ist eine sehr verbreitete Kodierung. Die Basis dieser Kodierung ist 64, was bedeutet, dass zur Darstellung der Daten 64 Zeichen verwendet werden. Dies sind alle Klein- und Großbuchstaben, die Ziffern 0 bis 9, das Plus-Zeichen (+) und der Schrägstrich (/). Bei der Kodierung werden jeweils 3 Byte Binärdaten in 4 kodierte Zeichen übertragen. Ist das Ergebnis nicht ein Vielfaches von 4, werden die restlichen Zeichen mit einem Gleichheitszeichen (=) aufgefüllt.

Je nach Einsatzzweck kann das Base64-Alphabet, insbesondere die Reihenfolge der Buchstaben und Ziffern, variieren.

Beispiel:
Das ist ein Test

Ergibt als Base64:

RGFzIGlzdCBlaW4gVGVzdA==

Quoted Printable

Quoted-Printable (QP) wird meist im Internet, etwa in E-Mails, verwendet. Dabei werden einige ASCII-Zeichen (0-127) und alle Zeichen von 128-255 kodiert. Die Kodierung wird durch ein Gleichheitszeichen (=) eingeleitet, gefolgt vom Hexadezimalwert des Zeichens. Ein Gleichheitszeichen am Ende einer Zeile maskiert einen bei der Kodierung eingefügten Zeilenumbruch und wird bei der Dekodierung entfernt.

Beispiel:
Ein großer Test mit äöü.
5 + 10 = 15
Leerzeichen am Ende

Kodiert als Quoted-Printable ergibt dies:

Ein gro=DFer Test=
 mit =E4=F6=FC.
5 + 10 =3D 15
Leerzeichen am Ende=20

URL Encoding

Um in einer URL reservierte oder ungültige Zeichen zu übergeben, werden diese kodiert. Dazu wird ein Prozentzeichen, gefolgt vom Hexadezimalwert dieses Zeichens verwendet.

Beispiel:
.../ein test/äöü/groß/

Ergibt als URL-Kodierung:

.../ein%20test/%C3%A4%C3%B6%C3%BC/gro%C3%9F/

Datumsformate und Zeitformate

DOS-Date / DOS-Time

Unter DOS (FAT-16) werden ein Datumswert und ein Zeitwert in jeweils 2 Byte (1 Word oder 16 Bit) gespeichert. Dabei werden die Bits folgendermaßen aufgeteilt:

DOS-Date:
BitsBeschreibung
0 - 4Tag des Monats (1 bis 31)
5 - 8Monat (1 = Jänner, 2 = Februar, etc.)
9 - 15Jahres-Offset ab 1980 (0 = 1980, 1 = 1981, etc.)
DOS-Time:
BitsBeschreibung
0 - 4Sekunden dividiert durch 2
5 - 10Minute (0 bis 59)
11 - 15Stunde (0 bis 23)

time_t

Das time_t-Format wird als DWord (4 Byte bzw. 32 Bit) gespeichert und wird speziell im UNIX-Bereich verwendet. Es gibt die Anzahl der seit dem 01.01.1970, 00:00:00 Uhr vergangenen Sekunden an und liegt meist in der UTC-Zeit vor.

FileTime

Wie Windows FileTime ist ein QuadWord (8 Byte bzw. 64 Bit), das die Anzahl der Intervalle von 100 Nanosekunden seit dem 1. Januar 1601 (UTC) enthält.

Slack

File-Slack, RAM-Slack und Drive-Slack

Der Speicherplatz eines Datenträgers (eines sog. blockorientierten Massenspeichergerätes) wird in Sektoren unterteilt. Üblicherweise verwenden Festplatten 512 Bytes, CDs und DVDs 2048 Bytes und neuere Festplatten und SSDs (Solid-State-Drives) 4096 Bytes pro Sektor.

Cluster sind Gruppen von einem bis zu 128 Sektoren. Cluster werden zur Speicherung von Dateien verwendet, wobei eine Datei immer am Anfang eines Clusters beginnt.

In der nachfolgenden Tabelle wird angenommen, dass ein Cluster aus 8 Sektoren besteht und der Dateiinhalt kein Vielfaches der Sektorgröße ist und innerhalb des 6. Sektors endet. Da die Daten sektorweise auf den Datenträger geschrieben werden, müssen die fehlenden Bytes bis zum Ende des Sektors aufgefüllt werden. Früher wurde dazu ein zufälliger Inhalt des RAM verwendet, was der Grund für die Bezeichnung "RAM-Slack" ist. Der Drive-Slack wird normalerweise nicht überschrieben und beinhaltet meist noch jene Daten, die sich vor der Speicherung der Datei an dieser Stelle befunden haben und früher einer mittlerweile gelöschten Datei zugeordnet waren.

Sektoren 1 - 5 Sektor 6 Sektor 7 Sektor 8
Dateiinhalt Letzter Teil des
Dateiinhalts
RAM-Slack Drive-Slack
File-Slack

Der File-Slack umfasst den Bereich vom Ende der Datei bis zum Ende des letzten belegten Clusters der Datei (RAM-Slack + Drive-Slack).

Der File-Slack wird auf Deutsch manchmal auch als Datei-Versatz oder Schlupfspeicher bezeichnet.

MFT-Slack

In NTFS werden die Informationen zu einer Datei in einem File-Record gespeichert. Darin sind Daten wie etwa der Dateiname, die Datei-Zeiten, die Dateigröße und die Position im Dateisystem. Für einen File-Record wird mindestens 1 KB oder die Clustergröße (meist 4 KB) reserviert. Ist die zu speichernde Datei nicht größer als der unbenutzte Speicherplatz im File-Record, wird der Inhalt direkt im File-Record gespeichert. Wird die Datei vergrößert und ist dafür kein Platz mehr im File-Record, wird die Datei im Datenbereich der Partition gespeichert. Im File-Record kann danach der ursprüngliche Dateiinhalt verbleiben.

Partition-Slack

Als Partitions-Slack wird der ungenutzte Bereich zwischen zwei Partitionen und nach der letzten Partition bis zum Ende des Datenträgers genannt. Waren in diesen Bereichen vor der Partitionierung bereits Daten gespeichert, können diese eventuell erhalten geblieben sein.

Gefällt dir meine Webseite, meine Freeware-Programme oder Online-Tools?

Dann spende bitte per PayPal und hilf mit, den Inhalt weiterhin kostenlos anbieten zu können - jeder Betrag ist willkommen!

Lese mehr über Unterstützungs­möglichkeiten...

Diese Webseite verwendet Cookies und verarbeitet Daten. Informationen zur Datenverarbeitung sowie zur Möglichkeit, diese abzulehnen, finden Sie in der Datenschutzerklärung. Ok