Datenrepräsentation
Datenrepräsentation
Unter Datenrepräsentation versteht man die Art und Weise, wie Informationen in einem Computersystem intern dargestellt, gespeichert, verarbeitet und übertragen werden. Sie bildet die Grundlage für jedes Software- und Hardwaresystem, da Daten nur korrekt verwendet werden können, wenn ihre Struktur und Bedeutung eindeutig definiert sind.
Ziele der Datenrepräsentation
Die Datenrepräsentation verfolgt folgende Ziele:
- Eindeutigkeit: Daten müssen eindeutig interpretierbar sein.
- Effizienz: Speicher- und Rechenaufwand sollen minimiert werden.
- Kompatibilität: Daten sollen zwischen Systemen austauschbar sein.
- Genauigkeit: Repräsentationen sollen Informationsverluste möglichst vermeiden.
Numerische Daten
Zahlen werden in Computern binär dargestellt, da digitale Schaltungen mit zwei Zuständen (0 und 1) arbeiten.
Ganzzahlen (Integer)
Ganzzahlen werden als Binärzahlen gespeichert, typischerweise in fester Bitlänge.
| Typ (C) | Speichergröße | Wertebereich (Beispiel) |
|---|---|---|
| `int8_t` | 1 Byte | −128 bis +127 |
| `int32_t` | 4 Byte | −2.147.483.648 bis +2.147.483.647 |
| `uint16_t` | 2 Byte | 0 bis 65.535 |
Die Darstellung negativer Zahlen erfolgt meist über das Zweierkomplement.
Gleitkommazahlen (Floating Point)
Für reelle Zahlen wird der IEEE 754-Standard verwendet.
| Typ (C) | Format | Genauigkeit |
|---|---|---|
| `float` | 32 Bit (Single Precision) | ~7 Dezimalstellen |
| `double` | 64 Bit (Double Precision) | ~15 Dezimalstellen |
Aufbau einer IEEE 754 Gleitkommazahl:
[Vorzeichen][Exponent][Mantisse]
Zeichen und Text
Zeichen werden über Zeichencodes dargestellt.
ASCII
- 7-Bit-Code, stellt grundlegende englische Zeichen dar.
- Beispiel: `'A'` → 65 (dezimal).
Unicode / UTF-8
Unicode ermöglicht die Darstellung nahezu aller Sprachen und Symbole. UTF-8 ist die gebräuchlichste Speicherform:
- Variabel von 1 bis 4 Bytes pro Zeichen.
- Rückwärtskompatibel zu ASCII.
Beispiel:
"A" → 0x41
"Ä" → 0xC3 0x84
Zusammengesetzte Datenstrukturen
Komplexere Informationen werden durch Kombination einfacher Datentypen aufgebaut.
- Arrays: Mehrere Werte gleichen Typs.
- Strukturen (struct): Gruppierte heterogene Daten.
- Zeiger: Speichern Speicheradressen.
- Objekte: Daten + zugehörige Funktionen (in OOP).
Beispiel in C
struct Person {
char name[50];
int alter;
};
Binäre und Textbasierte Datenformate
Daten können in binärer oder textueller Form gespeichert werden.
Binäre Formate
- Kompakt und effizient
- Nicht ohne Kenntnisse interpretierbar
- Beispiel: Protokolle, Bildformate (PNG, MP3)
Textbasierte Formate
- Menschlich lesbar, leicht austauschbar
- Mehr Speicherbedarf
- Beispiele:
JSON XML CSV
Endianess
Endianess beschreibt die Reihenfolge, in der Bytes gespeichert werden.
| Format | Beschreibung |
|---|---|
| Little Endian | Niederwertiges Byte zuerst (x86-Prozessoren). |
| Big Endian | Höherwertiges Byte zuerst (Netzwerkprotokolle). |
Beispiel (32-Bit Hexwert: `0x12345678`):
Little Endian: 78 56 34 12
Big Endian: 12 34 56 78
Datenrepräsentation in Netzwerken
Für die Kommunikation zwischen Systemen sind eindeutige Formate notwendig.
Wichtige Konzepte:
- XDR (External Data Representation) – sprach-/plattformunabhängige Datenbeschreibung
- Protocol Buffers – kompakte binäre Serialisierung (z. B. in gRPC)
- JSON – leicht lesbares textbasiertes Format für APIs
Herausforderungen
- Informationsverlust: z. B. Rundungsfehler bei Gleitkommazahlen.
- Inkompatibilität: unterschiedliche Endianess oder Zeichencodierungen.
- Speichergrenzen: Datenformate müssen Speicher und Genauigkeit abwägen.
Zusammenfassung
- Datenrepräsentation definiert, wie Informationen digital gespeichert und verarbeitet werden.
- Zahlen werden binär dargestellt, Text über Zeichencodierung.
- Komplexe Datenstrukturen ermöglichen flexible Modellierung.
- Korrekte Repräsentation ist Voraussetzung für interoperable und sichere Systeme.