Wir basteln uns ein Interface (4)

Wie schon in der letzten Ausgabe angedroht, gibt es diesmal ein wenig über die beliebtesten Zahlensysteme zu lesen. Besondere Aufmerksamkeit richten wir dabei auf das duale Zahlensystem, denn da muss man noch nicht einmal bis drei zählen können ...

Zugegeben, ganz so simpel ist die Sache nicht, aber auch nicht allzu schwer. Das Problem bei der Erfassung unterschiedlicher Zahlensysteme liegt eigentlich bei uns selbst. Aufgewachsen mit dem dezimalen Zahlensystem fällt es uns schwer, dieses Denkschema zu verlassen. Gleichgültig, in welchem Zahlensystem wir bestimmte Werte vorfinden, zuerst versuchen wir diese Werte in das dezimale Zahlensystem zu "übersetzen", damit die Größenordnungen solcher Werte für uns vorstellbar werden. Dazu kommt, dass z. B. Mengenangaben in dualer oder hexadezimaler Weise in unserem Alltag ausgesprochen selten vorkommen. Die Frage: "Was kosten zehn Birnen?" sollte beim heimischen Gemüsehändler eine entsprechende Antwort auslösen. Hexadezimal formuliert: "Was kosten A Birnen?" wird uns bestenfalls eine Gegenfrage einbringen, und mit dem Dualsystem: "Was kosten 101 Birnen?" erhalten wir mit Sicherheit eine falsche Antwort.

Damit unser Gemüsehändler weiß, in welchem Zahlensystem wir den Birnenpreis erfragen möchten, müssen wir ihm das mitteilen. Zu diesem Zweck werden den Zahlen entsprechende Kennungen vorangestellt. Unsere "Dezimalfrage" bleibt, wie sie ist, und wir bekommen eine dezimale Antwort: "Siebzehn Mark". Die hexadezimale Frage formulieren wir etwas um: "Was kosten &HA Birnen?". Der Gemüsehändler wird nun zu unserer Zufriedenheit antworten: "&H11 Mark". Die Antwort auf die duale Frage ("Was kosten &X101 Birnen?") lautet erwartungsgemäß: "&X10001 Mark". Ist doch ganz simpel, oder?

4 0 2 5 Dezimalzahl
103 102 101 100 Stellenwert
4 x 103 0 x 102 2 x 101 5 x 100 Summe = 4025
Tabelle 1: Hier die dezimale Zahl 4025 nach Stellen aufgeschlüsselt

2726252423222120Stellenwert
128 64 32 16 8 4 2 1 Dezimalwert
Tabelle 2: Hier ist ein Byte dargestellt. Wie beim Dezimalsystem steht der niedrigste Wert (hier das niedrigste Bit) rechts.

0 0 0 1 0 0 0 1 Dual
2726252423222120Stellenwert
128 64 32 16 8 4 2 1 Dezimalwert
0 0 0 16 0 0 0 1 Summe = 17
Tabelle 3: Die dezimalen Werte des gesetzten Bits werden zusammengezählt. Sie ergibt sich der dezimale Wert einer Dualzahl.

1 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 Dualzahl
8 A 6 2 Hexzahl
163 162 161 160 Stellenwert
**Tabelle 4: Hier die dezimale Zahl 35426 oben als unüberschaubare Dualzahl und darunter in der menschenfreundlichen hexadezimal Schreibweise.**

Warum andere Zahlensysteme?

Die Verwendung unterschiedlicher Zahlensysteme ist in der Regel technisch notwendig oder dient der Arbeitserleichterung. Betrachten wir einmal die Funktionsweise eines Computers, so wird schnell klar, warum das duale Zahlensystem die einzig mögliche Kommunikationsbasis darstellt. Ein Computer ist ein digitales Rechensystem, das bei bestimmten bestehenden Bedingungen in bestimmter Weise reagiert. Besonderes Augenmerk ist auf den Begriff "digital" zu richten.

digital (von lat. digitus = Finger)

Eigenschaften eines Elementes, nur diskrete, d. h. nicht stetig veränderbare Werte annehmen zu können.
Daten werden in Digitalrechnern durch diskrete Zustände von Schaltelementen dargestellt und durch Zählvorgänge miteinander verknüpft.

Ein digitales Zeichen gehört zu einem endlichen Zeichenvorrat mit gut unterscheidbaren Elementen. Der Übergang von einem digitalen Zeichen zu einem anderen geschieht sprungartig. Im Gegensatz hierzu können analoge Signale stufenlos (kontinuierlich) ineinander übergehen. (Auszug aus Schülerduden "Die Informatik")
Diese Erklärung muss man erst einmal genauer unter die Lupe nehmen, um zu erkennen, was damit gemeint ist. Der "diskrete Zustand" ist einer von zwei möglichen, nämlich 1. es fließ kein Strom (lo) oder z. es fließt ein Strom (hi). Die Bedeutung von lo und hi wird klarer, wenn man nicht den Strom, sondern die Spannung betrachtet: 1. es liegt keine Spannung an (0 Volt = lo) oder z. es liegt eine Spannung an (z.B. 5 Volt = hi). Ein "digitales Zeichen" ist weniger, als man vermuten möchte. Es handelt sich hierbei um 1 Bit, das zwei Zustände darstellen kann. Eine Ansammlung solcher "digitaler Zeichen" wäre dann unser "digitaler Zeichenvorrat". Bei einem 1040ST hätten wir als Arbeitsspeicher demnach folgenden "digitalen Zeichenvorrat": 1MB = 1024KB = 10241024 Byte = 10241024*8Bit (=digitale Zeichen). Wer es ausrechnen möchte - bitteschön. Der Wert dieser Bits kann sich nur sprungartig ändern und ist entweder lo oder hi, Werte dazwischen gibt es nicht.

Digitalschaltungen können also nur binäre (zweiwertige) Informationen verarbeiten. Deshalb kommt für die Zahlendarstellung logischerweise das binäre System zur Anwendung. Es gibt verschiedene Möglichkeiten der binären Zahlendarstellung. Das liegt in dem Umstand begründet, dass auch negative Zahlen, Brüche und dergleichen dargestellt werden müssen.

Glücklicherweise muss uns das alles nicht interessieren, denn für unser Interface reicht die Betrachtung von positiven ganzen Zahlen aus.

Dez, Bin und Hex

Das dezimale Zahlensystem ist zum Betrieb eines digitalen Rechensystems ungeeignet, weil es pro Zeichen eine zehnwertige Information (Wert von 0 bis 9) liefert. Deshalb muss jede dezimale Eingabe in ein binäres System übersetzt werden. Das passiert in heutigen Systemen in der Regel automatisch, so dass man sich darum nicht kümmern muss. Im umgekehrten Fall (der Rechner liefert Daten) ist es genauso. Die Ausgaben auf dem Monitor erfolgen in dezimaler Schreibweise. Tatsächlich arbeitet der Rechner aber immer mit binären Zahlen. An unserem Interface kann man dieses Verhalten gut betrachten: Füttern wir unsere Flip-Flops mit einem dezimalen Wert, leuchten die LEDs entsprechend diesem Wert in dualer Schreibweise. Wenn die in den Flip-Flops gespeicherten Daten eingelesen werden, erhalten wir auf dem Monitor die Daten in dezimaler Schreibweise.

Wie kommt man nun aber von dual nach dezimal und umgekehrt?

Die Umrechnung ist eigentlich halb so wild. Bei jedem Zahlensystem gibt es eine sogenannte Zahlenbasis. Im Dezimalsystem ist das die 10, im Dualsystem die 2 und im Hexadezimalsystem die 16. Der Stellenwert ist die Potenz als Ziffernfolge von 0 bis unendlich. Das gewohnte Dezimalsystem soll hier mal als Beispiel herhalten (siehe Tabelle 1).

Der Stellenwert "Einer" ergibt sich aus 10 (Basis) hoch 0 mal dem Kleinkram, der weniger als 10 ist, also 0 bis 9 (Zur Erinnerung: Eine Zahl hoch 0 hat immer den Wert 1!). Die "Zehner" entsprechen 10 hoch 1, "Hunderter" entsprechen 10 hoch 2 (= 10 x 10), "Tausender" 10 hoch 3 (_ 10 x 10 x 10) usw. Die Dezimalzahl 4025 setzt sich aus vier Stellenwerten zusammen, sie ist vierstellig. Die Werte der einzelnen Stellen werden einfach zusammengezählt, die Summe ist dann der Zahlenwert. Genauso ist es beim Dualsystem, nur noch einfacher, denn da gibt es keine Zwischenwerte. Die Multiplikation mit dem "Kleinkram" fällt somit weg. Betrachtet man einmal ein Byte (= 8 Bit) genauer, so wird der (Stellen)Wert der einzelnen Bits deutlich (siehe Tabelle 2).

Zur Aktivierung eines Bits muss dieses gesetzt werden. Dies geschieht, indem man es mit einer "1" versieht. Mathematisch gesprochen heißt es dann 1 x 2 hoch n. Für "n" wird die dem Stellenwert des Bits entsprechende Zahl eingesetzt.

Elektronisch würde die entsprechende Daten- oder Adressleitung nun Hi werden. Werte, die nicht benötigt werden, bekommen eine "0" (0 x 2 hoch n), der Computer läßt diese Leitungen dann auf Lo. Die gesetzten Werte werden dann einfach zusammengezählt, das Ergebnis ist eine Zahl in dezimaler Schreibweise (siehe Tabelle 3).

Bei der Betrachtung eines Bytes ist die duale Zahlendarstellung noch recht überschaubar. Unserem Gemüsehändler wollen wir auch verzeihen, dass er bei seiner binären Preisangabe die führenden Nullen weggelassen hat, denn bei einer dezimalen Angabe werden die ja auch nicht erwähnt. Unübersichtlich wird das Dualsystem bei größeren Zahlen. Will man zum Beispiel den Bereich von 0 bis 65535 erfassen, benötigt man schon 2 Byte. Das ist dann eine 16stellige Zahl, zwar binär, aber trotzdem schlecht zu merken. Die dezimale Zahl 35426 lautet im Dualsystem 1000101001100010, völlig ungeeignet für das menschliche Hirn! Zur Vereinfachung solcher Ausdrücke haben findige Menschen abgekürzte Schreibweisen eingeführt. Eine davon ist das Hexadezimalsystem. Dabei werden jeweils vier Dualstellen (der Fachmann nennt das ein Nibble) zu einer hexadezimalen Stelle zusammengefaßt. Eine solche Stelle kann Werte zwischen 0 und 15 annehmen. Weil dafür die Dezimalziffern nicht ausreichen, werden die hexadezimalen Ziffern 10 bis 15 durch die Buchstaben A bis F dargestellt.

Eine 16stellige Dualzahl verkürzt sich dadurch auf läppische 4 Stellen (siehe Tabelle 4).

Mit hexadezimalen Zahlen hatten wir es ja schon bei der Adressierung des Romports zu tun. Der Adressbereich von &HFB0000 bis &HFBFFFF zum Beispiel ist als dualer Ausdruck schon wesentlich unhandlicher: Mit der Angabe &X111110110000000000000000 bis &X111110111111111111111111 kann wohl kaum jemand so recht etwas anfangen. Das hexadezimale Zahlensystem ist also keineswegs für den Rechner erdacht worden, denn der kommt ausschließlich mit binären Zahlensystemen klar. Hexadezimale Zahlen sind nichts anderes als eine Arbeitserleichterung für uns einfach strukturierte Menschen. Der Vorteil gegenüber dem dezimalen Zahlensystem liegt darin, dass die Basis von Hexzahlen (16) als Potenz der Basis von Dualzahlen (2) darstellbar ist (2 hoch 4). Das ist beim Dezimalsystem mit der Basis 10 nicht der Fall. Für die binäre Darstellung des Zahlenbereichs von 0 bis 9 braucht man vier Dualstellen. Diese vier Stellen können den Bereich von 0 bis 15 darstellen, es werden aber nur 10 Kombinationen benutzt. Man braucht also zur Darstellung der gleichen Zahl mehr binäre Bits als bei der Vereinfachung durch Hex-Zahlen.

Trotzdem ist es zuweilen wünschenswert, Binärzahlen dezimal darzustellen, dann kommt eine binäre Darstellung im BCD-Code zum Einsatz, die einige Bits mehr benötigt als die Dualdarstellung.

Zum Schluß

Damit ist dieser Exkurs in die Zahlenwelt erst einmal beendet. Eine ganze Reihe von Darstellungsmöglichkeiten sind hier nicht zum Zuge gekommen. Oktalzahlen, vorzeichenbehaftete Zahlen, 8421-BCD-Code, und was weiß ich noch alles, werden im Rahmen der Interface-Reihe dann behandelt, wenn's notwendig ist.


Ulrich Skulimma
Aus: ST-Computer 01 / 1999, Seite 45

Links

Copyright-Bestimmungen: siehe Über diese Seite