Zahlen darstellen
Vom Stellenwertsystem über Dual und Hexadezimal bis zu Bitbreite und negativen Zahlen.
Das Dezimalsystem bewusst betrachten
Im Dezimalsystem stehen zehn Ziffern zur Verfügung. Der Wert einer Ziffer hängt von ihrer Position ab. Die Stellenwerte sind Potenzen von 10. So lässt sich beispielsweise 90328 zerlegen in:
9·10⁴ + 0·10³ + 3·10² + 2·10¹ + 8·10⁰
Das Dualsystem funktioniert nach demselben Stellenwertprinzip – nur mit Basis 2.
Ganze Zahlen im Dualsystem
Im Dualsystem gibt es nur die Ziffern 0 und 1. Von rechts nach links besitzen die Stellen die Werte 1, 2, 4, 8, 16, 32, 64 …, also Potenzen von 2. Eine 1 bedeutet: Der Stellenwert wird addiert; eine 0 bedeutet: Er wird nicht verwendet.
101101₂ = 32 + 8 + 4 + 1 = 45₁₀
Bitbreite und Wertebereich
Mit n Bits gibt es 2n unterschiedliche Muster. Für vorzeichenlose ganze Zahlen ergibt sich der Wertebereich von 0 bis 2n−1.
| Bits | Muster | Vorzeichenloser Bereich |
|---|---|---|
| 4 | 16 | 0 … 15 |
| 8 | 256 | 0 … 255 |
| 16 | 65 536 | 0 … 65 535 |
Hexadezimal als Kurzschreibweise
Vier Bits haben genau 16 mögliche Muster. Deshalb passt eine Gruppe aus vier Bits exakt zu einer Hexadezimalziffer. Die zusätzlichen Ziffernwerte 10 bis 15 werden mit A bis F geschrieben.
| Dual | Dezimal | Hex |
|---|---|---|
| 0000 | 0 | 0 |
| 0001 | 1 | 1 |
| 0010 | 2 | 2 |
| 0011 | 3 | 3 |
| 0100 | 4 | 4 |
| 0101 | 5 | 5 |
| 0110 | 6 | 6 |
| 0111 | 7 | 7 |
| 1000 | 8 | 8 |
| 1001 | 9 | 9 |
| 1010 | 10 | A |
| 1011 | 11 | B |
| 1100 | 12 | C |
| 1101 | 13 | D |
| 1110 | 14 | E |
| 1111 | 15 | F |
Beispiel: 1011 1000 1110 0001₂ lässt sich gruppenweise als B8E1₁₆ schreiben.
Hexadezimal ist also keine andere Speicherung im Computer, sondern eine kompakte menschliche Schreibweise für Bitmuster.
Zahlen in der Praxis
Nicht alles, was wie eine Zahl aussieht, sollte als Zahl gespeichert werden. Telefonnummern, Postleitzahlen oder Inventarcodes können führende Nullen oder zusätzliche Zeichen enthalten und werden daher häufig als Text behandelt. Umgekehrt werden Datums- und Zeitangaben intern oft durch Zahlen repräsentiert und erst für die Anzeige formatiert.
Welche der folgenden Daten würdest du als Zahl, welche als Text speichern: Körpergröße, Telefonnummer, Hausnummer, Temperatur, Postleitzahl, Punktzahl? Begründe jeweils anhand der geplanten Verarbeitung.
Wie viele Bits sind sinnvoll?
Eine feste Bitbreite begrenzt den darstellbaren Wertebereich. Zu wenige Bits führen zu Überläufen; sehr viele Bits verbrauchen zusätzlichen Speicher. Moderne Programmiersprachen und Datenbanken lösen dieses Problem unterschiedlich: Manche Datentypen haben feste Grenzen, andere können für ganze Zahlen bei Bedarf zusätzlichen Speicher verwenden.
Bei einer begrenzten Bitbreite kann eine Rechnung den erlaubten Wertebereich verlassen. Was dann passiert, hängt vom Datentyp und vom System ab. Dieses Verhalten darf nicht mit normaler mathematischer Arithmetik verwechselt werden.
Negative Zahlen und Zweierkomplement
Ein naheliegender Ansatz wäre ein zusätzliches Vorzeichenbit. Das erzeugt jedoch unter anderem zwei Darstellungen für Null und erschwert die Arithmetik. Üblich ist deshalb das Zweierkomplement.
Bei 8 Bit liegt der Bereich im Zweierkomplement bei −128 bis +127. Positive Werte sehen wie normale Dualzahlen aus. Einen negativen Wert erhält man aus dem positiven Betrag durch Bitumkehr und anschließendes Addieren von 1.
-30 in 8 Bit: 30 = 00011110 invertieren → 11100001 +1 → 11100010
Ein wichtiger Vorteil: Addition kann mit derselben binären Addierschaltung für positive und negative Zahlen erfolgen, solange die feste Bitbreite korrekt berücksichtigt wird.
Inhaltlich neu formulierte deutschsprachige Bearbeitung nach dem Computer Science Field Guide – Data Representation, einem Projekt der Computer Science Education Research Group der University of Canterbury (Neuseeland). Die Ausgangsinhalte stehen unter CC BY-SA 4.0. Diese Bearbeitung steht ebenfalls unter CC BY-SA 4.0. Änderungen: Übersetzung, Neuformulierung, didaktische Kürzung/Erweiterung, eigenes Layout und eigene Interaktionen.