Seite 1 von 15 DIGITALTECHNIK 02 ZAHLENSYSTEME
Inhalt Seite 2 von 15 1 ALLGEMEINES ZU ZAHLENSYSTEMEN... 3 1.1 ZAHLENSYSTEME... 3 1.2 KENNZEICHEN VON ZAHLENSYSTEMEN... 4 1.3 BILDUNGSGESETZE... 4 1.4 STELLENWERTSYSTEM... 5 1.5 DAS BINÄR- BZW. DUALSYSTEM... 6 1.6 INFORMATIONSEINHEITEN... 8 1.7 DUALZAHLEN MIT KOMMASTELLEN... 8 1.8 DAS OKTALSYSTEM... 9 1.9 DAS HEXADEZIMALSYSTEM... 9 1.10 UMRECHNUNGEN ZWISCHEN DEN SYSTEMEN... 11 1.10.1 Umwandlung einer Dualzahl in eine Dezimalzahl... 11 1.10.2 Umwandlung einer Dezimalzahl in eine Dualzahl... 11 1.10.3 Umwandlung einer Oktalzahl in eine Dezimalzahl... 12 1.10.4 Umwandlung einer Dezimalzahl in eine Oktalzahl... 12 1.10.5 Umwandlung einer Hexadezimalzahl in eine Dezimalzahl... 13 1.10.6 Umwandlung einer Dezimalzahl in eine Hexadezimalzahl... 13 1.10.7 Umwandlung einer Hexadezimalzahl in eine Dualzahl... 13 1.11 VIELFACHE DES BYTE... 14 1.12 TABELLE DER ZWEIERPOTENZEN... 15
Seite 3 von 15 1 Allgemeines zu Zahlensystemen Wenn wir von Zahlen reden und diese anwenden, handelt sich es fast ausschliesslich 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 blosses 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 muss, etwa das Binär- oder Hexadezimalsystem, seltener Oktalsystem. Hier kommt man ohne ein paar theoretische Grundlagen nicht mehr zurecht. Zahlensysteme werden zur Darstellung quantitativer Merkmale von Gegenständen, Vorgänge etc. verwendet. Die bekanntesten Zahlensysteme sind das arabische (0,1,2... ) oder das römische ( I, II, III... ) Zahlensystem. Die Ziffern bzw. Zeichen, die in den Zahlensystemen vorkommen, werden auch Nennwerte genannt. Die bekanntesten bzw. die gebräuchlichsten die bei der Programmierung benutzt werden heissen Dezimalsystem, Dualsystem, Oktalsystem und Hexadezimalsystem. Da wir uns mit vier Zahlensystemen beschäftigen, müssen wir um Missverständnisse zu verhindern, die Basiszahl welche dem Zahlensystem angehört, in Klammern setzten. Dezimalsystem 101 (10) Dualsystem 101 (2) Oktalsystem 5 (8) Hexadezimalsystem 3D58D (16) 1.1 Zahlensysteme Basis System Elemente 2 Dual 0,1 3 Ternar 0,1,2 8 Oktal 0,1,2,3,4,5,6,7 10 Dezimal 0 9 16 Hexadezimal 0 F
Seite 4 von 15 1.2 Kennzeichen von Zahlensystemen Die Zahl 3D7 (16) hex soll in eine Dezimalzahl umgewandelt werden. Wie geht man vor? 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). 1.3 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). XVII = 10+5+1+1 = 17 zulässig wäre auch die Schreibweise XIIIIIII oder 17-mal die I hintereinander. Gewohntenweise ordnet man die Ziffern nach ihrer Grösse von links nach rechts an. Das 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össeren 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.
Seite 5 von 15 1.4 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 muss also ein allgemeines Bildungsgesetz geben für die Darstellung jeder beliebigen Zahl in jedem beliebigen Zahlensystem. Die Aneinanderreihung von Ziffern zu einer Zahl Z kann man auch schreiben: 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: In der Zahl 3651 entsprechen die Stellen: a 3 = 3 ; a 2 = 6 ; a 1 = 5 ; a 0 = 1 die Berechnung erfolgt von rechts nach links, also beginnend mit der Stelle a 0 Z = 1*10 0 + 5*10 1 ; + 6*10 2 + 3*10 3 = 1 + 50 + 600 + 3000 = 3651
Seite 6 von 15 1.5 Das Binär- bzw. Dualsystem Das Dualsystem wurde von Gottfried Wilhelm Leibniz im17. Jahrhundert entwickelt. Es wird auch als Binärsystem bezeichnet, und arbeitet nur mit den Ziffern 0 und 1, wenn man diese Ziffern kombiniert, kann man jede Natürliche Zahl darstellen. Bei der EDV haben Dualzahlen eine besondere Bedeutung, es ist das elektronische Signal für zwei Zustände: 1 = ein und 0 = aus. Der Stellenwert einer Ziffer innerhalb des Dualsystems nimmt von Position zu Position um den Faktor 2 zu, jede Zahl lässt sich als Summe von Potenzen der Basis 2 darstellen. Die Nennwerte des Dualsystems sind 0 und 1 Die Dualzahl 110101 110101 = 1* 2 0 => 1 * 1 1 + 0* 2 1 => 0 * 2 0 + 1* 2 2 => 1 * 4 4 + 0* 2 3 => 0 * 8 0 + 1* 2 4 => 1 * 16 16 + 1* 2 5 => 1 * 32 32 = 53 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. fliesst Strom / fliesst 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 2 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 2 ist, ist die Basis für dieses System folgerichtig die 2. Die Bildungsvorschrift für binäre Zahlen ist analog dem Dezimalsystem: 10110 = 0*2 0 + 1*2 1 + 1*2 2 + 0*2 3 + 1*2 4 = 0 + 2 + 4 + 0 + 16 = 22 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. Ausserdem müssen diese Informationen beim Sender zerlegt und beim Empfänger wieder zusammengesetzt werden, was natürlich relativ viel Zeit kostet.
Seite 7 von 15 Wesentlich grössere Geschwindigkeiten erreicht man durch gleichzeitige Übertragung von mehreren bit. Ein Drucker ist 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 weiss, 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 kann, grössere Zahlen musste er erst mühselig aus "Einzelteilen" zusammensetzen, seine Berechnungen durchführen und anschliessend wieder zerteilen, um sie auf dem 8 bit breiten Datenbus an den jeweiligen Empfänger zu schicken. Man kann leicht beurteilen, welchen Geschwindigkeitszuwachs heutige 32-bit-Rechner bringen. Werden 8 bit zu einer Einheit zusammengefasst, erhält man 1 Byte - dies ist die kleinste adressierbare Informationseinheit in der EDV. 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össte 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 grosses B zu verwenden (5 kb = 5 KiloByte).
Seite 8 von 15 1.6 Informationseinheiten 1 Nibble 4 Bit 1 Byte 8 Bit 1 Wort 16 Bit 1 Doppelwort 32 Bit 1 Byte / 8 Bit: 1 0 0 1 1 1 0 1 2. Nibble 1. Nibble 1.7 Dualzahlen mit Kommastellen Dualzahlen können auch mit Ziffern nach dem Komma geschrieben werden. Der ersten Stelle rechts vom Komma ist als Stellenwert die Zweierpotenz 2-1 zugeordnet. Die zweite Stelle rechts vom Komma hat den Stellewert 2-2. Dezimal- 2 3 2 2 2 1 2 0, 2-1 2-2 2-3 2-4 Zahl 4.25 1 0 0, 0 1 11.5625 1 0 1 1, 1 0 0 1 Dezim al-zahl 22.687 5 2 5 2 4 2 3 2 2 2 1 2 0 2-1 2-2 2-3 2-4 32 16 8 4 2 1 0.5 0.25 0.125 0.0625 1 0 1 1 0 1 0 1 1 22.6875-16 = 6.6875-4 = 2.6875-2 = 0.6875-0.5 = 0.1875-0.125 = 0.0625-0.0625 = 0.0 Es kann sein, dass eine Dezimalzahl mit Kommastellen sich nicht ohne Rest in eine Dualzahl mit Kommastellen umwandeln lässt. Man muss dann entscheiden, auf wie viel Stellen nach dem Komma man die Dualzahl berechnen will und nach erreichen dieser Stellenzahl die Umrechnung abbrechen.
Seite 9 von 15 1.8 Das Oktalsystem Bei dem Oktalsystem haben wir es mit einem Achtersystem zu tun. Bei dem Oktalsystem müssen 3 Bits zu einer Zahl zusammengefasst werden. Wenn man die Bits eines Byte von rechts nach links, bei 0 beginnend durchnummeriert, so wird ein Byte durch eine dreistellige Oktalzahl dargestellt. Die Oktalzahl 1213 1213 = 3* => 3 * 8 0 3 + 1* => 1* 8 1 8 + 2* => 2 * 8 2 128 + 1* => 1 * 8 3 512 Dual 1 0 0 1 1 0 1 0 (2) Dezimal 128 +0 +0 +16 +8 +0 +2 +0 = 154 Oktal 010 011 010 => 2 3 2 (8) 1.9 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össerem 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össte, 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". Gross- oder Kleinschreibung der Buchstaben spielt keine Rolle, jedoch hat sich als guter Stil die Grossschreibung eingebürgert. Das allgemeine Bildungsgesetz hat auch hier seine Gültigkeit:
Seite 10 von 15 3D7 (16) = 7*16 0 + 13*16 1 + 3*16 2 = 7 + 208 + 768 = 983 (10). 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. 1111 1000 1001 0001 F 8 9 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össten darstellbaren Dezimalzahl mit einem Byte entspricht, also 255. Die Stellwert einer Ziffer nimmt von Position zu Position um den Faktor 16 zu, und lässt sich als Summe von Potenzen der Basis 16 darstellen. Die Hexadezimalzahl 7B1 lässt sich wie flogt darstellen. 7B1 = 1*16 0 => 1 * 1 1 + B*16 1 => 11* 16 176 + 7*16 2 => 7 * 256 1792 = 1969
Seite 11 von 15 1.10 Umrechnungen zwischen den Systemen 1.10.1 Umwandlung einer Dualzahl in eine Dezimalzahl Die entsprechende Dezimalzahl erhält man aus dem Dualzahl indem man den jeweiligen Stellenwert addiert. Dualzahl ( 110101 ) 2 entspricht der Dezimalzahl ( 53 ) 10 1*2 0 => + 1 0*2 1 => + 0 1*2 2 => + 4 0*2 3 => + 0 1*2 4 => + 16 1*2 5 => + 32 = 53 1.10.2 Umwandlung einer Dezimalzahl in eine Dualzahl Um eine Dezimalzahl in eine Dualzahl umzuwandeln, wird die Dezimalzahl durch 2 dividiert und den Rest notiert (Modulo-Verfahren), das ganzzahlige Ergebnis wird wieder durch 2 dividiert und den Rest notiert, dieses wiederholt man bis das ganzzahlige Ergebnis 0 beträgt. Die Dezimalzahl ( 53 ) 10 umwandeln in eine Dualzahl 53 / 2 = 26 Rest 1 1 26 / 2 = 13 Rest 0 0 13 / 2 = 6 Rest 1 1 6 / 2 = 3 Rest 0 0 3 / 2 = 1 Rest 1 1 1 / 2 = 0 Rest 1 1 = 1 1 0 1 0 1
Seite 12 von 15 1.10.3 Umwandlung einer Oktalzahl in eine Dezimalzahl Hier werden wie bei den anderen Beispielen die jeweiligen Stellenwerte Addiert. Die Oktalzahl ( 1213 ) 8 entspricht der Dezimalzahl ( 651 ) 10 3*8 0 => 3 * 1 3 1*8 1 => 1* 8 8 2*8 2 => 2 * 64 128 1*8 3 => 1 * 512 512 = 651 1.10.4 Umwandlung einer Dezimalzahl in eine Oktalzahl Um eine Dezimalzahl in eine Oktalzahl umzuwandeln, wird die Dezimalzahl durch 8 dividiert und den Rest notiert (Modulo-Verfahren), das ganzzahlige Ergebnis wird wieder durch 8 dividiert und den Rest notiert, dieses wiederholt man bis das ganzzahlige Ergebnis 0 beträgt. Die Dezimalzahl ( 30571 ) 10 entspricht die Oktalzahl ( 73553) 8 30571/ 8 = 3821 Rest 3 3 3821 / 8 = 477 Rest 5 5 477/ 8 = 59 Rest 5 5 59/ 8 = 7 Rest 3 3 7/ 8 = 0 Rest 7 7 = 7 3 5 5 3
Seite 13 von 15 1.10.5 Umwandlung einer Hexadezimalzahl in eine Dezimalzahl Auch hier gilt die entsprechende Dezimalzahl durch Addieren der Stellenwerte. Die Hexadezimalzahl ( 771) 16 entspricht die Dezimalzahl ( 1905 ) 10 1*16 0 => 1 * 1 1 7*16 1 => 7* 16 112 7*16 2 => 7 * 256 1792 = 1905 1.10.6 Umwandlung einer Dezimalzahl in eine Hexadezimalzahl Hier gilt das gleiche wie bei den vorherigen Beispielen, nur mit dem unterschied das durch die Zahl 16 dividiert wird. Die Dezimalzahl ( 251277 ) 10 entspricht die Hexadezimal ( 3D58D ) 16 251277/ = 15704 Rest 13 D 16 15704 / = 981 Rest 8 8 16 981/ 16 = 61 Rest 5 5 61/ 16 = 3 Rest 13 D 3/ 16 = 0 Rest 3 3 = 3 D 5 8 D 1.10.7 Umwandlung einer Hexadezimalzahl in eine Dualzahl A = 10 => 1010 F = 15 => 1111 F = 15 => 1111 E = 14 => 1110 = 1010 1111 1111 1110
Seite 14 von 15 1.11 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 = 10 3. Verständlicherweise hat die 10 als Basis im Dualsystem nichts zu suchen. Man muss sich also mit der 2 behelfen. Schaut man sich die Potenzen von 2 einmal etwas genauer an, erkennt man, dass 2 10 schon sehr nahe an der uns gewohnten 1000 liegt. Mehr ist da auch nicht rauszuholen, so dass tatsächlich gilt: 1 KB = 2 10 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 = (2 10 * 2 10 ) Byte = 2 20 Byte = 1.048.576 Byte analog: 1 GB = 1 KB * 1 MB = (2 10 * 2 20 ) Byte = 2 30 Byte = 1.073.741.824 Byte
Seite 15 von 15 1.12 Tabelle der Zweierpotenzen