|
Juni 1999
Ziel der hier vorgestellten Integer-Rechenscheibe ist es daher, an einem
überschaubaren Beispiel, nämlich 4-Bit Integern, die Darstellung
ganzer Zahlen im Rechner zu veranschaulichen. Darüber hinaus soll
der Effekt des Integer-Überlaufs ,,begreifbar`` gemacht werden. Dazu
können Addition und Subtraktion von Hand an der Scheibe durchgeführt
werden.
Der Übersichtlichkeit halber demonstrieren wir hier die Integer-Darstellung jedoch zunächst mit nur 4 Bits. Damit sind 24=16 verschiedene Werte darstellbar. Untersuchen wir zuerst, welche dezimalen Zahlenwerte hierdurch dargestellt werden.
Zunächst kann man die 16 verschiedenen Bitfolgen als Dualzahlen
interpretieren. Es ergeben sich dann die korrespondierenden Zahlenwerte
von 0 bis 15. Abbildung 1 zeigt die Bitfolgen und diese dezimalen Werte.
Die Anordnung im Kreis suggeriert, dass auf die Folge 1111 die Folge
0000
folgt. Dezimal ausgedrückt bedeutet dies, dass auf die Zahl 0 die
Zahl 15 folgt. Dies entspricht zwar nicht dem Rechnen mit ganzen Zahlen,
es gibt aber genau die Struktur der Restklassen modulo 16 wieder. Dort
gilt in der Tat 15+1=0, genauer: 15+1=0 mod 16. Mehr noch: Diese Interpretation
der Bitfolgen ist adäquat beim Rechnen mit Integern (wenn keine Fehlermeldung
beim Integer-Überlauf erfolgt), und sie erlaubt es auch, die negativen
Zahlen zu erfassen.
Betrachten wir, wieso das Rechnen ohne Überlaufwarnung gerade dem Rechnen modulo 16 entspricht. Als Beispiel addieren wir die Binärdarstellungen von 13 und 5:
1101 | |
+ | 0101 |
10010 |
Akzeptiert man einmal, dass nicht mit Z, sondern mit Z16,
den ganzen Zahlen modulo 16, gerechnet wird, so ist der Schritt zur Darstellung
negativer Zahlen nicht mehr weit. Modulo 16 ist doch die Zahl -1 äquivalent
zur 15, genauso -2 äquivalent zur 14 und so weiter. Man kann also
vom "oberen Ende" her darstellbare Zahlen wegnehmen und sie in der Interpretation
als negative Zahlen "von unten her" dazufügen. Wir teilen die verfügbaren
Bitfolgen zwischen negativen und positiven Zahlen auf. So interpretieren
wir 1000 als -8 und gehen im Zahlenkreis weiter bis
0111,
was die Zahl 7 repräsentiert. Da wir eine Folge (nämlich 0000)
zur Darstellung der Zahl 0 brauchen, ist eine völlige Symmetrie zwischen
negativen und positiven Zahlen nicht zu erreichen. Abbildung 2 zeigt die
neue Zuordnung der Bitfolgen zu Zahlen. Beachten Sie, dass wir hinsichtlich
der Restklassen modulo 16 nichts verändert haben. Wir haben lediglich
für einige Restklassen andere Repräsentanten gewählt. Damit
ist auch klar, dass die Addition genauso durchgeführt wird, wie wir
dies oben für das Beispiel 13+5 getan haben. Die Rechnung würde
in der neuen Interpretation der Bitfolgen allerdings-3+5 lauten, und plötzlich
ist das Ergebnis 2 auch richtig im herkömmlichen Sinne. Tatsächlich
mussten wir bei dieser Rechnung den Bereich der Zahlen von -8 bis +7 nicht
verlassen, und so stimmt die Rechnung modulo 16 mit der üblichen Rechnung
in Z überein.
Damit sind wir beim letzten Schritt zur Erklärung der Integer-Darstellung. Wir trennen uns nun wieder von der Vorstellung des Restklassenrechnens und behalten lediglich die Zahldarstellung bei. Verlassen wir den Bereich der darstellbaren Zahlen nicht, so können wir korrekt rechnen und müssen nichts über Restklassen wissen. Ein Integer-Überlauf tritt nun aber nicht beim Übergang von 1111 nach 0000 auf, sondern beim Schritt von 0111 nach 1000. Wird hierbei keine Fehlermeldung erzeugt, so ist, wie in der Überschrift, 5+7=-4.
Kommen wir abschließend zurück zur Darstellung ganzer Zahlen
mit n anstelle von nur 4 Bit. Die angeführten Überlegungen lassen
sich dann direkt übertragen. Es sind dann 2n Zahlen darstellbar
und es wird modulo 2n gerechnet. Die Bitfolgen werden nicht
als die Zahlen von 0 bis 2n-1 interpretiert, sondern als -2n-1
bis2n-1-1. Bei 16 Bit erhält man so die bekannte Spanne
von -32768 bis +32767, die dem obigen Beispiel 30000+20000=-15536 für
Turbo-Pascal zugrunde liegt. Bleibt man im darstellbaren Bereich, so sind
die Rechnungen auch in Z korrekt. Beim Überschreiten
der Bereichsgrenzen zeigt sich jedoch, dass streng genommen in Z2n
gerechnet wurde.
Auf der großen Scheibe sind die Bitfolgen von 0000 bis 1111 im Kreis eingetragen, außerdem die den Bitfolgen (außer der 0000) entsprechenden Zahlen von 1 bis 15 (als Subtraktionsskala) sowie ihre jeweiligen Komplemente zur 16 (als Additionsskala). Die Additions- und die Subtraktionsskala sind durch entsprechende Pfeile gekennzeichnet. Zudem ist bei der Bitfolge 0000 ein kleines Anschlagsloch eingestanzt, dessen Funktion durch das Zusammenspiel mit der kleinen Scheibe erklärt wird.
Am Rand der kleinen Scheibe sind in gleichen Abständen 16 kleine Löcher eingestanzt, die zur Führung des Rechenstifts bei der Addition und der Subtraktion dienen. Ferner ist an einem der Löcher ein Ablesepfeil angebracht. Abbildung 3 zeigt den Aufbau beider Scheiben.
Die Bedienung der Scheibe erfolgt mit einem Zahnstocher als Rechenstift. Als Beispiel sei die Durchführung der Berechnung von 5+7 dargestellt. Hierzu bringt man die Scheibe zunächst in die Ausgangsstellung, in der der Ablesepfeil der kleinen Scheibe auf die 0000 der großen Scheibe zeigt. Nun gibt man die Zahl 5 ein, indem man den Zahnstocher in das Loch neben der 5 der Additionsskala steckt und in Richtung des Additonspfeiles dreht, bis der Zahnstocher im Anschlagsloch der großen Scheibe einrastet. Nun addiert man auf analoge Weise die Zahl 7. Der Ablesepfeil zeigt danach auf die Bitfolge 1100, die als 12 oder -4 interpretiert wird.
Zur Subtraktion verwendet man in analoger Weise die Subtraktionsskala.
Im Folgenden sollen zwei Varianten der Verwendung der Rechenscheibe dargestellt werden.
Um den Datenbereich vollständig überblicken zu können, wird die Reduktion auf 4 Bit vorgenommen. Dann können an der Rechenscheibe auch Rechnungen ausgeführt werden, bei denen ein Überlauf eintritt. Dabei ist es sinnvoll, beide Interpretationen der Bitfolgen (0 bis 15 oder -8 bis 7) zu betrachten, da hierdurch die einende Sichtweise des Rechnens modulo 16 klar wird. Aus diesem Grund sind auf der Rechenscheibe diese Interpretationen nur in der Additions- und Subtraktionsskala versteckt gehalten. Auf der äußeren Skala sind dagegen die Bitfolgen angegeben, die noch beide Deutungen zulassen.
Anregend kann nun die Fragestellung nach anderen Darstellungen der ganzen Zahlen sein. Beispielsweise besteht die Möglichkeit, n-1 von n Bit für die Darstellung des Betrags einer Zahl in der üblichen Binärdarstellung zu verwenden und das n-te Bit als Vorzeichenbit zu verwenden. Dann ist es leichter, zu einer Bitfolge die Dezimaldarstellung zu bestimmen. Dagegen wird es viel schwieriger, Operationen auf dem Datentyp durchzuführen. Die Eleganz der Darstellung durch Repräsentanten modulo 2n tritt durch die Einfachheit des Addierens und Subtrahierens mit der Scheibe zu Tage.
Ist das Prinzip gut verstanden, so kann der Schritt zurück zu 16- oder 32-Bit Integern gemacht werden, indem die Anordnung der Zahlen in einem Kreis schematisch dargestellt wird. Hier können Addition und Subtraktion nun im Geiste vollzogen werden, da das Bild des Weiterdrehens der im Kreis angedordneten Zahlen noch präsent ist.
Mit einer solchen selbstgebauten Rechenscheibe lassen sich auch Subtraktionen
durchführen, die ein negatives Ergebnis haben (auch wenn dies ursprünglich
nicht als Anforderung benannt war). Lenkt man die Aufmerksamkeit noch darauf,
dass sich in üblichen Programmiersprachen der Datentyp Integer nicht
von 0 bis 65536, sondern von -32768 bis 32767 erstreckt, so können
Schüler die Zahldarstellung im Computer selbst entdecken: Zuerst für
die Zahlen von -8 bis 7 bei einer 4-Bit Darstellung, dann aber auch für
den Datentyp Integer in realen Programmiersprachen.
|