Zahlensysteme

Zahlensysteme

Allgemeines zu Zahlensystemen

Wenn wir von Zahlen reden und diese anwenden, handelt sich es fast ausschließlich um das Dezimalsystem (entstanden sicherlich aus der Zahl der Finger an unseren Händen). Beim Umgang mit diesem System haben wir soviel Routine, dass wir den Wert einer mehrstelligen Zahl durch bloßes Hinsehen sofort erfassen können und auch Rechenoperationen in begrenztem Umfang im Kopf ausführen können. Wir brauchen uns also keine Gedanken darüber machen, dass jedes Zahlensystem mathematischen Bildungsregeln unterliegt.

Schwieriger wird es schon, wenn man, wie z.B. in der EDV üblich, einmal andere Systeme anwenden muß, etwa das Binär- oder Hexadezimalsystem, seltener Oktalsystem. Hier kommt man ohne ein paar theoretische Grundlagen nicht mehr zurecht.

Kennzeichen von Zahlensystemen

Die Zahl 3D7 hex soll in eine Dezimalzahl umgewandelt werden. Wie geht man vor ?

Natürlich nach Bildungsgesetz für Stellenwertsysteme, denn dieses stellt eine Zahl aus jedem beliebigen System in uns verständlicher Dezimalform dar.Genauso verhält es sich bei Umrechnung von binär nach dezimal.Ein Zahlensystem ist immer gekennzeichnet durch

  1. Ziffernvorrat (zulässige Ziffern im jeweiligen System)
  2. Bildungsgesetz für die Anordnung der Ziffern und die Ermittlung des Zahlenwertes

Die Bedeutung der Worte “Zahl” und “Ziffer” unterscheidet sich deutlich. Eine Ziffer ist ein diskreter Einzelwert (im Dezimalsystem z.B. 2 oder 3 oder 8…), die Zahl ist eine Zusammenstellung von Ziffern, in deren Ergebnis je nach Bildungsgesetz ein konkreter Wert repräsentiert wird (z.B. 367).

Bildungsgesetze

Das Bildungsgesetz drückt aus, wie die Anordnung der Ziffern erfolgt und mit welcher mathematischen Vorschrift daraus ein entsprechender Zahlenwert entsteht. Es gibt 2 Bildungsgesetze: Ziffernwertsystem und Stellenwertsystem.

Ziffernwertsystem

Wichtigster bekannter Vertreter des Ziffernwertsystems ist das Römische Zahlensystem. Wie es der Name schon sagt: es spielt nur der Wert der einzelnen Ziffern für die Bildung der Zahl eine Rolle, nicht die Stelle, an der die Ziffer steht. Der Zahlenwert ergibt sich dabei aus einfacher Addition der Ziffern (weshalb man dieses System mitunter auch Additionssystem nennt).

Beispiel:

XVII = 10+5+1+1 = 17

Zulässig wäre auch die Schreibweise XIIIIIII oder 17-mal die I hintereinander. Gewohnterweise ordnet man die Ziffern nach ihrer Größe von links nach rechts an. Dies ist aber nur eine Vereinbarung und hat nichts mit der Berechnung der Zahl abhängig von der Stelle zu tun. Einzige Ausnahme bildet die Möglichkeit, ein Grundsymbol einem Symbol größeren Werts voranzustellen (Konversion). Der Wert des vorgestellten Zeichens entspricht dann im Bildungsgesetz seinem negativen Wert:

IV = 4 ; XIX = 19

Das Ziffernwertsystem hat für in der EDV verwendete Zahlensysteme keine Bedeutung.

Stellenwertsystem

Der Zahlenwert wird hier ganz entscheidend durch die Position (die Stelle) bestimmt, an der sich eine Ziffer befindet. Im Dezimalsystem ist uns die “verkürzte” Schreibweise einer Zahl, nämlich die einfache Aneinanderreihung von Ziffern, geläufig:

3651 ist auf den ersten Blick der Zahlwert dreitausendsechshunderteinundfünfzig.

Schwierig bis unmöglich wird diese “Hinguckmethode” bei der Hexadezimalzahl F7B3 einfach nur deshalb, weil wir mit diesem System nicht täglich umgehen. Es muß also ein allgemeines Bildungsgesetz geben für die Darstellung jeder beliebigen Zahl in jedem beliebigen Zahlensystem.

Will man berechnen, welcher Zahlenwert sich hinter dieser Ziffernfolge verbirgt, verwendet man die Bildungsvorschrift für Stellenwertsysteme.

Es bedeuten:

  • Z eine ganze positive Zahl
  • i der Zählindex von 0 bis n
  • B Basis des jeweiligen Zahlensystems (die Basis eines Zahlensystems ergibt sich immer aus der kleinsten Zahl, die sich in diesem System nicht mehr mit einer einzelnen Ziffer darstellen lässt, also im Dezimalsystem die 10, im Binärsystem die 2 usw..)
  • a Ziffernvorrat des Zahlensystems (Dezimal 0…9, binär 0…1) wobei gilt:

Beispiel:

In der Zahl 3651 entsprechen die Stellen: a3 = 3 ; a2 = 6 ; a1 = 5 ; a0 = 1.
Die Berechnung erfolgt von rechts nach links, also beginnend mit der Stelle a0.
Damit kann die Zahl 3651 im allgemeinen durch eine Summe der Stellenwertigkeit dargestellt werden:

3651 = 3⋅103 + 6⋅102 + 5⋅101 + 1⋅100

Mit Hilfe dieses Verfahrenens kann jede Zahl eines Beliebigen Zahlensystemes in das dezimale Zahlensystem umgerechnet werden.

Das Binär- bzw. Dualsystem

Das Binäre Zahlensystem

Dieses ist das grundlegende Zahlensystem in der Datenverarbeitung. Die Elektronik von Computern besteht aus Millionen miniaturisierter Transistoren, die wie normale Schalter wirken und durch geschickte Kombination spezielle Aufgaben ausführen können (z.B. rechnen). Da Schalter nur die 2 Zustände an / aus (bzw. fließt Strom / fließt kein Strom, früher auch High / Low) erzeugen können, bietet es sich natürlich an, dies mathematisch mit einem Zahlensystem darzustellen, das genau diese zwei Zustände wiedergibt.

Das Binärsystem hat als Ziffernvorrat nur die 0 und die 1. Da die kleinste, nicht mehr mit einer Ziffer darstellbare Zahl die Zwei ist, ist die Basis für dieses System folgerichtig die Zwei.

Bildungsvorschrift

Die Bildungsvorschrift für binäre Zahlen ist analog dem Dezimalsystem:
0 und 1 sind die kleinsten darstellbaren Einheiten in der EDV. Man nennt sie “bit” (Abkürzung für BInary digiT, bzw. engl.- der Happen). Mit einem Bit kann man natürlich nicht sehr viel anfangen. Genutzt wird die Technik der “1-bit-Übertragung” bei seriellen Anschlüssen (z.B. Maus, Modem …). Der Nachteil dabei ist, dass vom Sender zum Empfänger solange Einzelbit-Informationen gesendet werden müssen, bis eine vollständige Information (die vielleicht 8 bit oder noch mehr benötigt) angekommen ist. Außerdem müssen diese Informationen beim Sender zerlegt und beim Empfänger wieder zusammengesetzt werden, was natürlich relativ viel Zeit kostet.

Wesentlich größere Geschwindigkeiten erreicht man durch gleichzeitige parallele Übertragung von mehreren bit. Bei ältereren Systemen war ein Drucker z.B. an den Parallel-Port eines Rechners angeschlossen, im Verbindungskabel befinden sich 8 Leitungen für die gleichzeitige (parallele) Datenübertragung von je einem bit. Dabei kommt die Zahl 8 nicht von ungefähr, denn jedes druckbare Zeichen kann man mit 8 bit darstellen.

8 bit in Binärschreibweise können einen dezimalen Maximalwert von 11111111 = 255 (= 256 Einzelwerte, da die 0 mitgerechnet wird) annehmen.
Die standardisierten Zeichensätze (ASCII, ANSI) weisen jedem dieser Werte ein Zeichen (Druckzeichen, Steuerzeichen, Sonderzeichen) zu, so dass der Drucker sofort weiß, wenn auf den 8 Leitungen die Binärzahl 1000001 (dez. 65) ankommt, dass der Buchstabe “A” zu drucken ist. Die ersten 8-bit-PC hatten eine interne Verarbeitungsbreite von eben diesen 8 bit, d.h., dass der Prozessor maximal Zahlen von 255 direkt verarbeiten konnte, größere Zahlen musste er erst mühselig aus “Einzelteilen” zusammensetzen, seine Berechnungen durchführen und anschließend wieder zerteilen, um sie auf dem 8 bit breiten Datenbus an den jeweiligen Empfänger zu schicken.

Man kann leicht beurteilen, welchen Geschwindigkeitszuwachs heutige 64-bit-Rechner bringen. Werden 8 bit zu einer Einheit zusammengefasst, erhält man 1 Byte – dies ist die kleinste adressierbare Informationseinheit in der EDV.

Gruppierungen

Byte ist ein Kunstwort und wurde 1956 zum ersten Mal von IBM verwendet. In der Bitschreibweise teilt man ein Byte der Übersichtlichkeit halber gern auch noch in 2 Halbbyte durch ein Leerzeichen auf.1101 0011 0110 1100 diese Zahl besteht also aus 2 Byte.
Die größte darstellbare Zahl mit einem Byte ist also 255. Benötigt man auch negative Zahlen, kann man im einfachsten Fall das erste bit als Vorzeichen (0 bedeutet positiv, 1 negativ) verwenden und man kann mit den verbleibenden 7 bit noch Zahlen realisieren von -127 bis +127 (die 0 gibt es 2-mal, positiv und negativ).

Werden Bit und Byte als Abkürzungen verwendet, z.B. in Kilobit oder Kilobyte, ist es allgemein üblich, zur besseren Unterscheidung für bit ein kleines b und für Byte ein großes B zu verwenden (5 kB = 5 KiloByte)

Das Hexadezimalsystem

Für Zahlenangaben in verschiedensten Bereichen der EDV (z.B. Farben in Grafikprogrammen, in der Programmierung…) ist die Darstellung in Binärschreibweise sehr umständlich und unübersichtlich. Schon eine 5-stellige Dezimalzahl würde binär 16 Stellen benötigen! Aus diesem Grunde hat man sich für reine Darstellungszwecke für ein Zahlensystem mit größerem Ziffernumfang entschieden.

Warum die Wahl nun gerade auf das Hexadezimalsystem fiel, werden wir gleich erkennen. Hexadezimal sagt ja aus, dass die Basis dieses Systems die 16 ist, d.h. es gibt auch 16 einzelne Ziffern und die größte, mit einer Ziffer darstellbare Zahl ist die dezimale 15. Für unser “dezimales” Denken ist es etwas schwierig, die Ziffern oberhalb 9 darzustellen. Wir können hier natürlich keine “10” schreiben, denn dies ist ja in jedem System eine konkrete Zahl und würde im Hexsystem die dezimale 16 bedeuten. Man verwendet deshalb Buchstaben.

Ziffernvorrat hexadezimal:

0 1 2 3 ....7 8 9 A B C D E F 

Das “C” entspricht also der dezimalen “12”. Groß- oder Kleinschreibung der Buchstaben spielt keine Rolle, jedoch hat sich als guter Stil die Großschreibung eingebürgert. Das allgemeine Bildungsgesetz hat auch hier seine Gültigkeit.

Beispiel:
Warum nun gerade Hexadezimalzahlen ?
Eine Ziffer hex kann maximal den dezimalen Wert 15 annehmen. Bezogen auf das Binärsystem entspricht das 4 bit (1111 bin = 15 dez), also genau einem Halbbyte.
Man kann also ein Byte binär mit genau 2 Ziffern hexadezimal darstellen. Diese Darstellungsweise lässt sich visuell sehr schnell erfassen und man braucht auch keine komplizierten Umrechnungsprogramme.

Beispiel:

1111=F
1000=8
1001=9
0001=1

Sieht man z.B. die Hexzahl “FF”, kann man auf den ersten Blick erkennen, dass es sich hier um genau 1 Byte handelt, in dem alle bit auf 1 gesetzt sind und dies der größten darstellbaren Dezimalzahl mit einem Byte entspricht, also 255.

Umrechnungen zwischen den Systemen

hex/bin nach dezimal

Die Zahl 3D7 hex soll in eine Dezimalzahl umgewandelt werden. Wie geht man vor ?
Natürlich nach dem bereits erlernten Bildungsgesetz für Stellenwertsysteme, denn dieses stellt eine Zahl aus jedem beliebigen System in uns verständlicher Dezimalform dar. Genauso verhält es sich bei Umrechnung von binär nach dezimal.

bin nach hex, hex nach bin

Das gestaltet sich recht einfach. Da eine Hexaziffer einem binären Halbbyte entspricht, kann man über den Umweg Dezimalzahl direkt die Umrechnung vornehmen.

dezimal nach bin/hex

Das ist der schwierigste Part. Wie sieht die Zahl 53271 hexadezimal aus ? Man könnte durch Probieren versuchen, die Zahl in entsprechende 16-er-Potenzen zu zerlegen, aber das dürfte umso komplizierter werden, je größer die Zahl wird.
Folgende Methode tut genau das, aber auf mathematischen Wege und nicht dem Zufall überlassen.

Eine Dezimalzahl Z soll in eine Zahl des y-Systems gewandelt werden:
Es sind mehrere Schritte erforderlich, bis sich ein errechneter Rest nicht mehr durch y teilen lässt (d.h. Null ist) …

Z mod y = e1
(Z/y) mod y = e2
((Z/y)/y) mod y = e3

… das wiederholen wir solange, bis der Ausdruck Null ergibt. Anschließend werden die Ergebnisse in umgekehrter Folge einfach aneinandergereiht, also
Z=e3e2e1

Zur Erklärung:
mod bedeutet Rest der ganzzahligen Division, d.h. als e1, e2 usw. steht nicht das Divisionsergebnis sondern lediglich der Rest, der bei der Division entsteht.

Ein Beispiel:

Die Dezimalzahl 29 (=Z) ist in das Binärsystem (y=2) zu wandeln

29
(29/2)
((29/2)/2)
(((29/2)/2)/2)
(((29/2)/2)/2)/2)
mod 2 = 1
mod 2 = 0
mod 2 = 1
mod 2 = 1
mod 2 = 1

Im nächsten Schritt würde der Klammerausdruck 0 ergeben, deshalb ist hier Ende.
Die gesuchte Binärzahl wird von unten nach oben aufgeschrieben:

11101

Etwas vereinfacht kann man das Ganze auch so schreiben:

(1) Teile die Zahl Z durch die Basis y, schreibe den Quotienten darunter und den Rest daneben.
(2) Ist der Quotient gleich 0 ? Wenn nein, fahre mit Schritt (1) fort und nehme als Zahl den Quotienten. Wenn ja, mache weiter mit Schritt (3).
(3) Schreibe die Reste von unten nach oben gelesen von links nach rechts hintereinander.
Z = 29 dezimalbinär: 11101
Die Umwandlung in eine Hexadezimalzahl funktioniert analog, nur dass die Basis hier 16 ist :
Z = 29 dezimalhexadezimal: 1D
Natürlich muß die dezimale 13 im Ergebnis als D geschrieben werden.

Vielfache des Byte

Die Nutzung von Vorsätzen wie Kilo, Mega, Giga ist in der Datenverarbeitung etwas eigenartig. Es ist nämlich ein KB (KByte, Kilobyte) nicht wie erwartet gleich 1000 Byte. Schuld daran ist das binäre Zahlensystem. Im Dezimalsystem entspricht ein Kilo = 103 . Verständlicherweise hat die 10 als Basis im Dualsystem nichts zu suchen. Man muß sich also mit der 2 behelfen. Schaut man sich die Potenzen von 2 einmal etwas genauer an, erkennt man, dass 210 schon sehr nahe an der uns gewohnten 1000 liegt. Mehr ist da auch nicht rauszuholen, so dass tatsächlich gilt:
1 KB = 210 Byte = 1024 Byte

Wie kommt man nun mit diesem Wissen zum Megabyte? Indem man beachtet, dass das Kilo hier auch wieder mit 1024 zu multiplizieren ist, professionell ausgedrückt:
1 MB = 1 KB * 1 KB = (210 * 210) Byte = 220 Byte = 1.048.576 Byte
1 GB = 1 KB * 1 MB = (210 * 220) Byte = 230 Byte = 1.073.741.824 Byte

Zu beachten sind noch die Schreibweisen der Abkürzungen:

B = Byte ;
b = bit- KB oder KByte = KiloByte (1024 Byte)
kB oder kByte = KiloByte (1000 Byte), seltener und nicht konsequent verwendet
Kb oder Kbit = Kilobit (eigentlich 1024 bit, oft auch als 1000 bit verwendet).
Die Schreibweisen werden leider nicht immer und überall konsequent angewendet.