Die Community zu .NET und Classic VB.
Menü

Bits & Bytes

 von 

Ü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

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:

10er System 4er System
0 0
1 1
2 2
3 3
4 10
5 11
6 12
7 13
8 20
9 21
10 22
11 23
12 30
13 31
14 32
15 33
10er System 4er System
16 100
17 101
18 102
19 103
20 110
21 111
22 112
23 113
24 120
25 121
26 122
27 123
28 130
29 131
30 132
31 133

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:

2er System 10er System 4er System
0 0 0
1 1 1
10 2 2
11 3 3
100 4 10
101 5 11
110 6 12
111 7 13
1000 8 20
1001 9 21
1010 10 22
1011 11 23
1100 12 30
1101 13 31
1110 14 32
1111 15 33
2er System 10er System 4er System
10000 16 100
10001 17 101
10010 18 102
10011 19 103
10100 20 110
10101 21 111
10110 22 112
10111 23 113
11000 24 120
11001 25 121
11010 26 122
11011 27 123
11100 28 130
11101 29 131
11110 30 132
11111 31 133

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.