Bits & Bytes
von Götz Reinecke
Übersicht
Dieser Artikel erläutert den grundsätzlichen Aufbau unsereres Zahlensystems und die binäre Zahlendarstellung in heutigen Computern.
Mit freundlichen Grüßen
Götz Reinecke reinecke@activevb.de
Zahlensysteme
Zuerst einmal etwas über Zahlensysteme: Man kann auf jeder Zahl ein Zahlensystem aufbauen, wobei sich üblicherweise das Dezimalsystem (Zahlen von 0 bis 9) und vereinzelt noch das Zwölfersystem (England) durchgesetzt hat.
Betrachten wir einen Zählvorgang anhand des Dezimalsystems mal etwas genauer:
Wir zählen 0, 1, 2, 3, ...9, jetzt kommt das Problem, daß wir keine Ziffer mehr für die Zahl Zehn kennen, daher fangen wir wieder bei 0 an. Um diese Null aber von der ersten Null unterscheiden zu können und um zu zeigen, daß es sich um eine höherwertige Zahl handelt, setzen wir als Merker eine 1 davor und erhalten somit die uns allen bekannte Zahl für Zehn: 10
Wenn wir jetzt weiter zählen funktioniert das bis in das Unendliche hinein nach dem selben System: 10, 11, 12, ...50...98, 99, und jetzt der Umbruch mit der Eins: 100,101 genauso wie:
100, 101, 102, ...500...998, 999, Achtung: 1000, 1001, 1002
1000, 1001, 1002, ...5000...9998, 9999, Achtung: 10000, 10001, 10002 etc.
Zahlensystem auf der Basis 4
Nehmen wir einmal an wir seien ganz dumm und wären gerade fähig bis drei zu zählen, also 0, 1, 2, 3 und dann ist Ende, die Zahl Vier kennen wir ja nicht. Um weiter zählen zu können, wenden wir einfach den selben Trick wie oben an, indem wir wieder bei 0 anfangen und als Merker eine 1 davorschreiben.
Wir würden also wie folgt zählen:
0, 1, 2, 3, und jetzt der Umbruch mit der Eins: 10, 11, 12, 13, und wieder der Umbruch mit der Eins 20, 21, 22, 23, Achtung: 30, 31, 32, 33, Mhm was jetzt, Ahja genauso wie im Zehnersystem:
100, 101, 102, 103, Achtung, 110, 110 etc.
Zur Verdeutlichung noch einmal Anhand einer Tabelle:
|
|
Zahlensystem auf der Basis 2
Was mit dem Zahlensystem auf der Basis der Zahl 4 möglich ist, kann auch ohne Probleme auf jede andere Zahl übertragen werden. Wir wollen uns aber einmal speziell mit dem kleinstmöglichen System befassen, nämlich dem auf der Basis 2. Hier haben wir nur zwei Zahlen zur Verfügung: 0 und 1.
Keine Panik, wir halten uns einfach an die oben besprochene Vorgehensweise. Wir zählen also los: 0, 1, was jetzt ? Ach ja wieder diese Sache mit dem Umbruch : 10, 11, und jetzt ? Na klar: Umbruch:100, 101, Umbruch 110, 111, Achtung: 1000, 1001, und 1010, 1011, und 1100, 1101, 1111, jetzt: 10000, 10001, 10010, 10011, etc.
Folgende Tabelle wird dies wieder besser verdeutlichen:
|
|
Speicherzellen und Wörter
Eine Speicherzelle ist die kleinste Einheit des Rechners, sie wird Bit genannt und ist vergleichbar mit einem Buchstaben oder Zeichen. Um nun aber aus diesen Zeichen ein Wort zu bilden, bedarf es nicht nur einer Speicherzelle, sondern mehrerer. Also reiht man nun einige Bits nebeneinander und erhält so ein Wort. Beim Computer nennt man ein solches Wort Byte , es besteht aber immer aus einer festen Anzahl von Bits (oder Speicherzellen).
Beispiel:
1 Byte bestehend aus 8 Bit | 2 Byte bestehend aus 16 Bit |
Üblicherweise werden diese Bytes aus z.B. 8, 16, 32, und 64 Bit zusammengefaßt und stehen unter einer festen Adresse im Speicher zur Verfügung. Jedes Byte eines Speichers besitzt eine solche eindeutige, unverwechselbare Adresse. Die Adressen erlangen ihre Einzigartigkeit nach einem recht einfachen System, sie werden nämlich einfach von 0 beginnend aufwärts gezählt. Die erste Adresse eines Speichers ist immer die Zahl Null, dann geht weiter mit 1, 2, 3, 4....usw.
Anhand der letzten Adresse des Speicher hat man mit dieser Numerierung der einzelnen Bytes gleichzeitig eine Aussage über die Gesamtgröße des Speichers.
Ist die letzte Adresse z.B. 1023, faßt der Speicher 1024 Bytes (die Null zählt mit). Lautet die letzte Adresse 1048575 so verfügen wir über 1048576 Bytes , bei Adresse 1073741823 gibt es 1073741824 Bytes. Tja das sind aber ziemlich große Zahlen, die sich kein Mensch merken kann, und wenn dann kommt man schnell durcheinander. Deshalb gibt es folgende Vereinbarung:
1024 Byte | = | 1 Kilo Byte | abg. = 1 KB |
1024 Byte * 1024 Byte | = | 1 KB * 1 KB = 1 Mega Byte | abg. = 1 MB |
1024 Byte * 1024 Byte * 1024 Byte | = | 1 KB * 1 KB * 1KB = 1 MB * 1 KB = 1 Giga Byte | abg. = 1 GB |
Potenzen
Zuerst eine kleiner Schnellkurs zur Bildung von Potenzen: Eine Potenz besteht aus zwei Zahlen: einer großgeschriebenen, gefolgt von einer hochgestellten, kleingeschriebenen wie zum Beispiel 102.
Die Zahl 10 ist die großgeschriebene und wird Basis genannt, die folgende hochgestellte und kleinschriebene ist in unserem Fall die 2. Sie wird Exponent genannt. Im Exponenten wird immer angegeben wie oft die Basis mit sich selbst multipliziert werden muß. 102 beutet also, daß die Basis 10 zweimal mit sich selbst multipliziert wird, also 10*10, Das Ergebnis wäre natürlich 100. Ein paar Beispiele zum besseren Verständnis:
10 0 | = | 1 | |
10 1 | 10 | = | 10 |
10 2 | 10 * 10 | = | 100 |
10 3 | 10 * 10 * 10 | = | 1.000 |
10 4 | 10 * 10 * 10 * 10 | = | 10.000 |
Es ist leicht zuerkennen, daß sich bei einer Basis von zehn mit wachsendem Exponenten immer mehr Nullen anfügen. Das gleiche Prinzip ist auf jedes andere Zahlensystem übertragbar, auch auf unser geliebtes Zweiersystem:
2 0 = | = 1 | 2 8 = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 | = 256 |
2 1 = 2 | = 2 | 2 9 = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 | = 512 |
2 2 = 2 * 2 | = 4 | 2 10 = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 | = 1024 |
2 3 = 2 * 2 * 2 | = 8 | 2 11 = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 | = 2048 |
2 4 = 2 * 2 * 2 * 2 | = 16 | 2 12 = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 | = 4096 |
2 5 = 2 * 2 * 2 * 2 * 2 | = 32 | 2 13 = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 | = 8192 |
2 6 = 2 * 2 * 2 * 2 * 2 * 2 | = 64 | 2 14 = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 | = 16384 |
2 7 = 2 * 2 * 2 * 2 * 2 * 2 * 2 | = 128 | 2 15 = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 | = 32768 |
Als Merkregel läßt sich sagen, daß bei jeder Erhöhung des Exponenten um eine Stelle, sich das Gesamtergebnis verdoppelt.
Doch jetzt zurück zu unseren Bits . Schauen wir uns 1 Byte mit acht Bits aus dem Beispiel von oben etwas genauer an:
Diese Byte besitzt einen Wert! Aber welchen, wie rechne ich denn eine Zahl aus dem zweier System ins 10er System um?
Dazu ersteinmal etwas zum 10er System. Wie setzt sich dort eine Zahl wie 4711 zusammen?
Lösung:
1. Darstellung als Segment
2. Darstellung als Potenz
4711 | = | 4 * 103 | + | 7 * 102 | + | 1 * 101 | + | 1 * 100 |
= | 4 * 1000 | + | 7 * 100 | + | 1 * 10 | + | 1 * 1 | |
= | 4000 | + | 700 | + | 10 | + | 1 | |
= | 4711 |
Genauso wollen wir es mit unserem Byte anstellen:
Gehen wir jetzt als Versuch davon aus, daß wir ein Byte hätten in dem alle Bits unter Strom ständen, also alle auf den Wert 1 gesetzt wären:
1. Darstellung als Segment
2. Darstellung als Potenz
01011101 | = | 0 * 27 | + | 1 * 26 | + | 0 * 25 | + | 1 * 24 | + | 1 * 23 | + | 1 * 22 | + | 0 * 21 | + | 1 * 20 |
= | 0 * 128 | + | 1 * 64 | + | 0 * 32 | + | 1 * 16 | + | 1 * 8 | + | 1 * 4 | + | 0 * 2 | + | 1 * 1 | |
= | 0 | + | 64 | + | 0 | + | 16 | + | 8 | + | 4 | + | 0 | + | 1 | |
= | 93 |
1. Darstellung als Segment
2. Darstellung als Potenz
11111111 | = | 1 * 27 | + | 1 * 26 | + | 1 * 25 | + | 1 * 24 | + | 1 * 23 | + | 1 * 22 | + | 1 * 21 | + | 1 * 20 |
= | 1 * 128 | + | 1 * 64 | + | 1 * 32 | + | 1 * 16 | + | 1 * 8 | + | 1 * 4 | + | 1 * 2 | + | 1 * 1 | |
= | 128 | + | 64 | + | 32 | + | 16 | + | 8 | + | 4 | + | 2 | + | 1 | |
= | 255 |
Mhm, was ist denn das? Das hieße ja, Zahlen die größer als 255 sind ließen sich nicht mehr darstellen!
Aber : Man kann sich mit einem Trick behelfen. Man nehme zwei aufeinander folgende Bytes, lege sie zusammen und tue so, als seien sie ein einziges Byte . Somit erhält man folgendes:
Mit diesem Trick lassen sich immerhin ganze Zahlen bis zu einer Höhe von 65535 darstellen (Wer will kann gerne nachrechnen)
Um noch weiter im Zahlenstrahl vorzurücken, bedient man sich desselben Tricks, nur diesmal nicht mit 2 Bytes sondern schon 4 Byte. Hier verschiebt sich die Obergrenze auf 4.294.967.296
Abschließend läßt sich sagen je höher die Zahl ist die gespeichert werden soll, desto mehr Speicherplatz muß zur Verfügung gestellt werden.
Übrigens läßt sich im 2er System (auch binäres System genannt) mit den vier Grundrechenarten (+, -, *, /) genauso rechnen wie im 10er (Dezimalsystem).
Ihre Meinung
Falls Sie Fragen zu diesem Tutorial haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.