Einmal Zahlen bitte!
Bevor wir jetzt anfangen können zu rechnen, brauchen wir natürlich Zahlen. Und zwar mehr als nur 0 und 1. Also schauen wir uns mal an, wie wir Zahlen im Binärsystem darstellen können.
Positive Zahlen
Im Dezimalsystem, also dem Zahlensystem, das wir im Alltag benutzen, haben wir zehn Ziffern: 0 bis 9.
Im Binärsystem gibt’s aber nur zwei Ziffern: 0 und 1.
Interessanterweise kann man alle Prinzipien unseres Dezimalsystems auch im Binärsystem anwenden.
Was bedeuted das?
Zählen wir erstmal hoch. 0, 1, 2, …, 9, und jetzt?
Wir haben ja nur die Ziffern 0 bis 9.
Also zählen wir die Stelle vor der 9 einmal hoch und fangen neu an. 09 wird also zu 10.
Ok, ich schwöre wir sind nicht im Kindergarten und das ganze hat einen tieferen Sinn!
Machen wir doch das gleiche im Binärsystem
Wir zählen also: 0, 1, und jetzt?
Jetzt machen wir das gleiche: Wir zählen die Stelle vor der 1 hoch und fangen neu an. 01 wird also zu 10.
Was in unserem Dezimalsystem eine 2 ist, ist binär ausgedrückt also eine 10. Und so können wir natürlich weiter zählen.
| Dezimal | Binär |
|---|---|
| 0 | 0 |
| 1 | 1 |
| 2 | 10 |
| 3 | 11 |
| 4 | 100 |
| 5 | 101 |
| 6 | 110 |
| 7 | 111 |
| 8 | 1000 |
| … | … |
Das Prinzip sollte klar sein.
Aber zum Umrechnen wollen wir ja nicht immer hochzählen müssen bis wir zufällig die richtige zahl finden. Natürlich gibt es aber Umrechnungsformeln, die wir benutzen können.
Umrechnung Binär zu Dezimal
Um eine Binärzahl in eine Dezimalzahl umzuwandeln, können wir jede Stelle der Binärzahl mit der entsprechenden Potenz von 2 multiplizieren und die Ergebnisse addieren.
Ihh, das klingt nach Mathe.
Aber so schwierig ist es nicht.
Nehmen wir zum Beispiel die Binärzahl
| Stelle | Wert der Stelle | Potenz von 2 | Berechnung |
|---|---|---|---|
| 3 | 1 | ||
| 2 | 1 | ||
| 1 | 0 | ||
| 0 | 1 | ||
Was hier schon auffällt, dass wir die Stellen von rechts nach links durchnummerieren, beginnend bei 0. Das können wir übrigens auch im Dezimalsystem machen.
Die händische Umrechnung ist in der Theorie ganz einfach, praktisch ist es natürlich bei großen Zahlen etwas umständlich.
Daher lasst ihr am besten einen Computer die Umrechnung machen.
Der kennt das schon.
Umrechnung Dezimal zu Binär
Um eine Dezimalzahl in eine Binärzahl umzuwandeln, können wir die Zahl durch 2 teilen und den Rest notieren.
Wir wiederholen diesen Vorgang mit dem Ergebnis der Division, bis das Ergebnis 0 ist.
Die Binärzahl ergibt sich dann aus den notierten Resten, gelesen von unten nach oben.
Das klingt doch schon wieder so kompliziert…
Ist es aber auch nicht, ebenfalls nur aufwendig.
Nehmen wir zum Beispiel die Dezimalzahl 13 von oben und rechnen wieder zurück:
| Division | Ergebnis | Rest |
|---|---|---|
| 6 | 1 | |
| 3 | 0 | |
| 1 | 1 | |
| 0 | 1 |
Die Reste von unten nach oben gelesen ergeben die Binärzahl
Auch hier gilt wieder: Probiert es gern mal aus, aber bei großen Zahlen lasst lieber den Computer die Arbeit machen.
Wo hoch kann ich gehen?
In PCs arbeiten wir im Normalfall mit einer festen Anzahl an Bits für eine Ganzzahl.
Je nach Definition im Code kann das unterschiedlich lang sein, aber im Normalfall hat man die Auswahl aus 8, 16, 32, 64 und vielleicht sogar 128 Bit.
Die höchste Zahl in der jeweiligen “Feldbreite” ist dann natürlich die, wo alle Bits auf 1 gesetzt sind.
Also für z.B. 8 Bit:
Zusammen mit der 0 sind das also
Man kann diese beiden Werte auch ganz einfach berechnen:
- Die Anzahl der darstellbaren Zahlen (inkl. 0) ist
, wobei die Anzahl der Bits ist. - Die höchste Zahl ist
, wobei die Anzahl der Bits ist.
Damit wir nicht durcheinanderkommen, wenn ich mal irgendwo eine Hundert schreibe (Ist es eine
Negative Zahlen
Bisher haben wir nur positive Zahlen betrachtet. Wie sieht es aber mit negativen Zahlen aus? Im Alltag im Dezimalsystem schreiben wir einfach ein Minuszeichen vor die Zahl. Und das können wir natürlich auch vor unsere Binärzahlen schreiben - aber der PC kann nur 0 und 1, der kann kein Minus.
Um trotzdem negative Zahlen darstellen zu können, benutzen Computer das sogenannte Zweierkomplement. Das haben sich ein paar schlaue Köpfe ausgedacht und es ist cool, weil unsere normalen Rechenregeln für Addition und Substraktion weiterhin funktionieren.
Eine Zahl im Zweierkomplement darzustellen funktioniert so:
- Man nimmt die Binärdarstellung der positiven Zahl
- Man invertiert alle Bits (0 wird zu 1 und 1 wird zu 0)
- Man addiert 1 zur invertierten Zahl
Schritt 2 ist tricky, weil man etwas bedenken muss: Vor der Zahl gibt es eine feste Anzahl an Bits, die alle 0 sind.
Im Zweierkomplement muss unser Zahlenraum (in Bit angegeben) als begrenzt sein und berücksichtig werden.
Nehmen wir also an, wir arbeiten in einem 8-Bit-System.
Nehmen wir zum Beispiel die Zahl
- Die Binärdarstellung von
ist - Invertieren wir alle Bits:
- Addieren wir
:
Also ist die Darstellung von
Die Rechnung zurück ist übrigens exakt gleich.
Nehmen wir also die Zahl
- Invertieren wir alle Bits:
- Addieren wir
: - Die Binärdarstellung
ist im Dezimalsystem, also ist die ursprüngliche Zahl .
Woher wissen wir nun, ob eine Zahl im Zweierkomplement positiv oder negativ ist?
Wir schauen uns einfach das höchstwertige Bit (das ganz links) an.
Wenn es eine
Das Gegenteil ist dann “unsigned integer”.
Jetzt haben wir aus einem 8-Bit-System nur noch 7 Bits für die Zahl selbst übrig, da die erste Stelle, ja das Vorzeichen angibt. Durch das Nutzen von Vorzeichen, schränken wir die möglichen Zahlen ein.
Während wir mit 8 Bit noch 255 positive Zahlen und die 0 darstellen konnten, sind es nun nur noch 127 positive Zahlen (0 bis 127) und die 0, aber auch 128 negative Zahlen (-1 bis -128).
Wenn wir später rechnen, müssen wir hier eher aufpassen: