Buchgenerator (deaktivieren)

Computerhardware: Binärzahlen

Aus Wikibooks

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

[Bearbeiten] Was ist das eigentlich – ein Zahlensystem?

Ein Zahlensystem dient dazu, Zahlen – vor allem große Zahlen – einfach und übersichtlich darzustellen. Außerdem soll es möglichst einfach sein, mit den Zahlen zu rechnen.

Mit der Entstehung erster Städte und Zivilisationen entstand die Notwendigkeit, mit großen Zahlen umzugehen. Auf einem Bierdeckel mit ein paar Strichen die Anzahl der bestellten Biere zu notieren, ist übersichtlich. Mit 300 Strichen zu notieren, dass ein Einwohner mit 300 Krügen Wein seine Steuern bezahlt hat, ist sehr unübersichtlich. Deshalb wurden die ersten Zahlensysteme erfunden: Das sumerische, das ägyptische und später das römische Zahlsystem. Die Grundidee: Für größere Mengen von Einsen werden Gruppensymbole eingeführt. Die Römer verwendeten den Buchstabe „I“ für die Eins. Zehn Striche wurden durch ein „X“ ersetzt, „C“ steht für hundert und „M“ für tausend. Zusätzlich gibt es Halbzahlen: „V“ für fünf, „L“ für 50 und „D“ für 500. So konnte man die 300 Striche durch „CCC“ ersetzen. „MCCXIII“ bedeutet also 1213, und CXXXII, XCXIIX oder XXXIIC bedeuten 132. Die Reihenfolge der Ziffern spielt eigentlich keine Rolle, nur die Summe zählt. Daher werden derartige Zahlensysteme als „Additionssysteme“ bezeichnet.

Eine beliebige Reihenfolge der Ziffern führt allerdings dazu, dass es für eine Zahl viele verschiedene Schreibweisen gibt. Das ist unübersichtlich. Deshalb hatten die Römer eine Regel, die größeren Ziffern vor den kleineren zu schreiben.

Zahl richtig falsch
4 IV IIII
9 IX VIIII
19 XIX XVIIII
1959 MCMLIX MDCCCCLVIIII

Für die römischen Zahlen gibt es eine weitere, etwas merkwürdige Sonderregelung, um das Schreiben von vier gleichen aufeinanderfolgenden Zeichen zu vermeiden: Steht vor einer größeren Ziffer eine kleinere, wird die kleine von der großen abgezogen. Die Zahlen werden dadurch kürzer. So schreibt man für die Zahl 49 beispielsweise „IL“ statt „XXXXVIIII“.

Die Addition und Subtraktion römischer Zahlen ist nicht leicht, gemessen an unserem heutigen Kenntnissen und Gewohnheiten. Sie zu multiplizieren oder gar zu dividieren ist ein Albtraum.

Die Araber haben das Dezimalsystem nach Europa gebracht. Dieses System vereinfachte das Rechnen so sehr, dass etwa im 15. Jahrhundert in Westeuropa die römischen Zahlen durch das Dezimalsystem abgelöst wurden.

Worin besteht die Überlegenheit des Stellenwertsysteme? Das Dezimalsystem ist ein Stellenwertsystem mit den folgenden wichtigen Eigenschaften:

  • Alle Zahlen, klein oder beliebig groß, können mit zehn Ziffern (den Ziffern von 0 bis 9) gebildet werden. Zehn Ziffern = Dezimal.
  • Das Dezimalsystem ist ein „Stellenwertsystem“: Der „Wert“ einer Ziffer hängt davon ab, an welcher Stelle einer Zahl sie steht. Wenn eine Ziffer von der letzten Stelle in die vorletzte Stelle einer Zahl vorrückt (wenn man rechts eine Null anfügt), ist sie zehn mal mehr „wert“.
  • Für das Rechnen mit großen Zahlen gibt es „relativ einfache“ Regeln. Ob ich mit zweistelligen oder 20stelligen Zahlen rechne, die Regeln sind die gleichen.

Wir verwenden das Zehnersystem, weil wir Dinge an zehn Fingern abzählen. Hätten die Menschen einen weniger beweglichen Daumen, würden wir möglicherweise das Oktalsystem für das natürlichste Zahlensystem der Welt halten. Wenn wir leichtbewegliche Zehen hätten und barfuß laufen würden, wäre vielleicht das Zwanziger-Zahlensystem optimal.

Wie rechnet man in einem Stellenwertsystem? Ob es sich um die Regeln für Addition, Multiplikation, Division und andere handelt, alle uns bekannten Rechenregeln gelten für alle Stellenwert-Zahlensysteme gleichermaßen! Für Computer wird das „binäre Zahlensystem“ verwendet (Binär = Zwei), in dem es nur zwei Ziffern gibt, die Null und die Eins.

[Bearbeiten] Warum arbeiten Computer im Binärsystem?

Im Computer werden die Ziffern durch Spannungen dargestellt, wie könnte es bei einer elektrischen Maschine anders sein. Die Null wird durch eine niedrige Spannung und die Ziffer Eins durch eine höhere Spannung dargestellt.

Alle Halbleiter-Schaltungen haben zwei prinzipielle Probleme:

  • Nicht-Linearität: Alle Halbleiterbauelemente haben eine so genannte „nichtlineare Kennlinie“. Wenn man am Eingang einer Schaltung die Spannung langsam und gleichmäßig von Null Volt bis zum Maximum erhöht, würde bei einer „linearen Kennlinie” die Ausgangsspannung ebenfalls gleichmäßig ansteigen, ja sogar proportional zur Eingangsspannung sein. Aber bei einem Halbleiterbauelement steigt bei gleichmäßig steigender Eingangsspannung die Ausgangsspannung erst sehr langsam, dann schnell und zuletzt wieder sehr langsam an.
  • Starke Parameterschwankungen: Halbleiter-Schaltkreise können leider nur mit großen Toleranzen hergestellt werden. Winzigste Schwankungen in der Materialqualität und den Fertigungsbedingungen führen zu großen Abweichungen vom Durchschnitt. Stellen Sie sich eine Autofabrik vor, wo Autos unterschiedlicher Qualität vom Fließband rollen: PKW mit einem Verbrauch von 30 Liter/100 km und 60 km/h Höchstgeschwindigkeit, und eine Stunde später mit 3 Liter/100 km und 300 km/h Höchstgeschwindigkeit. In der Gütekontrolle würden die Autos sortiert und in mehrere Klassen eingeteilt, die dann zu verschiedenen Preisen verkauft werden. Ebenso verfährt die Halbleiterindustrie mit ihren Erzeugnissen.

Welche Konsequenzen haben beide Probleme für die Zahlendarstellung im Computer?

Würde man unser gebräuchliches Dezimalsystem für Computer verwenden wollen, müsste man jede der zehn Ziffern durch einen anderen Spannungswert darstellen, z. B. Ziffer 0 durch 0 Volt, Ziffer 1 durch 0,3 V, Ziffer 2 durch 0,6 V, Ziffer 3 durch 0,9 V usw. bis zur Ziffer 9 mit 2,7 V. Diese Spannungen müssten sehr genau eingehalten werden, um sie genau unterscheiden zu können. Nehmen wir als Beispiel die Ziffer 2 mit 0,6 Volt. Schon eine geringe Abweichung von 5% = 0,15 Volt würde den Pegel auf 0,75 Volt anheben. Dieser Wert wäre von der "Zwei" genau so weit wie von der "Drei" entfernt. Die Elektronik könnte nicht mehr zwischen benachbarten Ziffern unterscheiden. Ist diese Genauigkeit möglich?

Die Ingenieure haben gelernt, elektronische Bauelemente trotz aller Parameterschwankungen und Nichtlinearitäten so zusammenzuschalten, dass sehr genaue Schaltungen entstehen. Aufwändige Schaltungen, so genannte „Operationsverstärker“, können zehn und mehr Spannungsstufen genau genug unterscheiden. Ein moderner Prozessor enthält allerdings einige Millionen Schaltelemente. Einige Millionen Operationsverstärker - das würde niemand bezahlen wollen, und man brauchte eine Halle für so einen Computer.

Wenn man allerdings das Binärsystem verwendet, muss die Elektronik nur zwei Zustände unterscheiden. Dann sind auch nichtlineare Elemente mit schwankenden Parametern geeignet.

Betreibt man die Schaltkreise mit einer Versorgungsspannung von 3 Volt, gilt meist eine Eingangsspannung zwischen 0 V und 0,8 V als Ziffer 0, und eine Eingangsspannung über 2,0 V gilt als Ziffer 1. Eingangsspannungen zwischen 0,8 V bis 2,0 V sind undefiniert und dürfen nicht auftreten.

In jedem Schaltkreis werden die Signale regeneriert: Die Ausgänge eines Schaltkreises liefern 0,4 V bei der Ziffer 0. Selbst wenn diese Spannung von Null bis 0,8 V schwankt, und wird sie trotzdem von der nachfolgenden Schaltung einwandfrei als Null erkannt. Die 2,4 V Ausgangsspannung der Ziffer 1 darf von 2,0 bis 3,0 Volt schwanken. Durch diese großzügigen Toleranzen bei den zulässigen Eingangsspannungen wird eine hohe Zuverlässigkeit erreicht. Die genauen Spannungen variieren je nach Herstellungstechnologie (TTL, CMOS, Schottky oder andere) und sind Datenblättern zu entnehmen.

Fazit: Nur auf der Basis des binären Zahlensystems kann man bezahlbare Computer bauen, und deshalb müssen wir uns hier mit dem Binärsystem herumschlagen. Erst durch die Reduzierung aller Schaltelemente auf nur noch zwei Spannungsstufen konnten die Toleranzanforderungen an die elektronischen Bauelemente so sehr verringert werden, dass die preiswerte Massenfertigung von Schaltkreisen möglich wurde. Weil wir preiswerte Computer wollen, müssen wir die Unannehmlichkeit in Kauf nehmen, dass die Computer nur Nullen und Einsen kennen und jede, absolut jede Information (Zahlen, Texte, Bilder, Musik, Videos, ...) in eine Folge von Nullen und Einsen umgewandelt werden muss.

Binärzahlen sind allerdings sehr lang und unübersichtlich. Die Dezimalzahl 1234 wird im Binärsystem zu 10011010010, die Zahl 1 000 000 wird zu 11110100001001000000. Diese Zahlen sind schwer zu merken und zu schreiben, deshalb benutzt man aushilfsweise auch noch das Hexadezimalsystem, seltener auch das Oktalsystem. Eine Million schreibt sich im Hexadezimalsystem als F4240, also recht kurz. Die Kenntnis der binären, oktalen und hexadezimalen Zahlensysteme ist für Programmierer unentbehrlich, aber auch für normale Benutzer manchmal nützlich, weil diese oft in technischen Anleitungen, Fehlermeldungen, Spieletipps (Cheats) und anderen Unterlagen verwendet werden. Als Anwender muss man zumindest wissen, dass in hexadezimalen Computerzahlen außer den Ziffern 0 bis 9 auch noch die Buchstaben von A bis F anstelle von Ziffern verwendet werden.

Hier finden Sie weitere Details zu oktalen, hexadezimalen und anderen Zahlensystemen.

[Bearbeiten] Wie kann der PC Buchstaben und Zahlen darstellen?

ASCII-Tabelle (Auszug)
Zeichen dezimal binär
0 48 110000
1 49 110001
2 50 110010
...
9 57 111001
 : 58 111010
 ; 59 111011
< 60 111100
...
a 97 1100001
b 98 1100010
c 99 1100011

Um Texte zu schreiben, haben wir ein Alphabet aus einigen Dutzend Buchstaben zur Verfügung sowie zahlreiche Sonderzeichen. Für Zahlen haben wir zehn Ziffern zur Verfügung. Das „Alphabet“ des Computers besteht aber nur aus zwei Zeichen: Eins und Null. Wie kann man damit auskommen?

Die Methode ist einfach und wurde schon vor langer Zeit erfunden. Denken Sie bitte mal an das Morsealphabet: Es gibt kurze und lange Zeichen („Punkt“ und „Strich“) sowie Pausen zwischen den Zeichen. In einer Code-Tabelle ist jedem Buchstaben eine Kombination von Punkten und Strichen zugeordnet. Eine ähnliche Codetabelle gibt es auch für die Darstellung von Buchstaben im Computer.

[Bearbeiten] ASCII und das Byte

Die gebräuchlichste Code-Tabelle für Computer ist ASCII, was für „American Standard Code for Information Interchange“ steht. In dieser Tabelle sind alle wichtigen Zeichen der englischen Sprache aufgezählt und von Null bis 127 durchnummeriert. So hat beispielsweise der Buchstabe „A“ die Nummer 65 (binär: 100 0001), „B“ die 66 (binär: 100 0010) usw. Auch die Zeichen für die Ziffern haben eine Nummer: die Ziffer „1“ hat die Nummer 49 (binär: 11 0001). Auch „nicht druckbare“ Zeichen haben eine Nummer bekommen, zum Beispiel die Taste „Enter“ und die Löschtaste „Rückschritt“ (Backspace). In der nebenstehenden Tabelle sind einige Werte aufgeführt.

Hier ist die vollständige Wikipedia-logo.png ASCII-Tabelle.

Die ursprüngliche ASCII Tabelle wurde später um weitere 128 Zeichen erweitert, zum Beispiel um die deutschen Umlaute und besondere Zeichen anderer Sprachen, die im englischen Alphabet nicht enthalten sind. Dadurch entstand jedoch nicht nur eine neue Zeichentabelle, sondern mehrere, weil auch die 256 Zeichen nicht ausreichten, alle Alphabete abzudecken. Beispiele für so entstandene Zeichensätze sind die Normenfamilie Wikipedia-logo.png ISO 8859 und der Wikipedia-logo.png ANSI-Code.

Man braucht eine Gruppe von acht Bit, um diese 256 verschiedenen Schriftzeichen zu speichern. Eine solche zusammenhängende Gruppe von 8 Bit nennt man ein Byte. Weil man mit einem einzelnen Bit kaum etwas anfangen kann, aber sehr wohl mit einem Byte, gibt man seitdem die Kapazität eines digitalen Speichers in Byte an, bzw. in Vielfachen davon.

[Bearbeiten] Unicode

Nun reichen auch 256 Zeichen noch nicht für alle Sprachen aus. Man denke an das russische, griechische und chinesische Alphabet. Japaner, Chinesen und zahlreiche andere Völker waren benachteiligt und forderten eine praktikable Möglichkeit, die vielen Zeichen ihrer Sprache genau so selbstverständlich benutzen zu dürfen, wie wir das lateinische Alphabet am Computer benutzen. Deshalb entwickelten die Computerfachleute eine Codierung namens Unicode, mit der man alle jemals von Menschen verwendeten Schriftzeichen speichern kann, einschließlich sumerischer Keilschrift und ägyptischer Hieroglyphen. Je nachdem, welches der vielen Zeichen man darstellen möchte, braucht man dafür 8 bis 32 Bit. MS-Office, OpenOffice und jedes andere moderne Programm erkennt automatisch, ob ein Text im alten ASCII-Code oder im neuen Unicode gespeichert ist.

Persönliche Werkzeuge