Technische Informatik

 

Festkomma-Arithmetik in Java

Kontakt  

Hinweise für Erstbenutzer


Die Benutzung ist etwas gewöhnungsbedürftig, insbesondere für Erstbenutzer. Die Startseite ermöglicht entweder den Aufruf einer Eingabeseite für unterschiedliche Eingabemöglichkeiten der Daten oder direkt den Aufruf der Ablaufsteuerung in Verbindung mit den 4 verschiedenen Varianten: Multiplikation und Division jeweils in der Darstellung Betrag mit Vorzeichen bzw. Zweikomplement. Sie lassen sich durch ein Auswahlfeld einstellen und greifen jeweils auf die eingegebenen Daten zurück. Stets werden alle Varianten angezeigt. Dabei ist auf kleine Besonderheiten zu achten:

Vorzeichen sind nur bei der Dezimaldarstellung auswählbar, die Dualzahleingaben reagieren auf die Vorzeichenstelle in entsprechender Weise.

Auf Apple-Rechnern unter Netscape erfolgt die Eingabe des Minuszeichens vom Ziffernblock, nicht vom Bindestrich der Tastatur. Jede neue Eingabe muß auch mit der Absatztaste, nicht mit Eingabe, beendet werden. Es ist auch die Änderung einzelner Ziffern möglich. Die Wortlänge wird automatisch angepaßt.

Die Visualisierung ist vor oder nach dem direkten Rechenschritt, bei dem das Ergebnis unmittelbar auf dem Eingabefeld angezeigt wird, aufrufbar. Betätigt man nach dem Aufruf der Visualisierung das Feld "Ende", bedeutet das Rückkehr zum Eingabemodus und erlaubt die Auswahl anderer Algorithmen oder Daten oder eine Benutzung ohne Visualisierung.

"Neustart" innerhalb des Visualisierungsablaufs erlaubt eine Wiederholung mit den gleichen Daten. Das Feld "Tabelle" öffnet zusätzlich eine Anzeige der Rechnungsschritte als Protokoll, so daß sich die Abläufe leicht nachvollziehen lassen.

Die Mikroabläufe, die durch schrittweise Abarbeitung des angezeigten Mikroprogramms und Heraushebung der gerade aktiven Zeilen visualisiert werden sollen, sind leider infolge der Paralleladdition schwer beobachtbar, deshalb enthält ein Hilfsregister stets den alten Akkumulatorwert.. Die Paralleladdition ist andererseits zur Anpassung an die realen Bedingungen erforderlich.

Die Steuerung der Teilschritte ist einerseits an Verzögerungszeiten (Vorauswahl 1000 ms) gebunden, die in Stufen von 500 ms durch + oder — veränderbar sind, andererseits durch die Felder "Schritt", "Takt", "Ergebnis" beeinflußbar. Dabei erzeugt "Schritt" die nächste Zeile des Mikroprogramms, "Takt" den nächsten Stellenzyklus bei den 8-Bit-Registern und "Ergebnis" den direkten Ablauf bis zum Ende des Mikroprogramms.


Erläuterungen des Betriebs und Sonderfälle.


Bei der Implementierung der vier Rechenverfahren hat sich herausgestellt, daß es trotz der rechnerunabhängigen Programmierung in der Sprache Java nicht ganz trivial ist, die Abläufe von den benutzten Rechnern wirklich unabhängig zu machen. Doch ist das durch kleine Änderungen inzwischen weitgehend erreicht.

Interessant sind die Folgerungen, die man bei den Möglichkeiten der Rechenalgorithmen und den entstehenden Grenzfälle beobachten kann. Je mehr Sonderfälle in den Ablauf einbezogen werden, also Behandlung der Null, Behandlung kleinster und größter Eingabewerte, Behandlung eventueller Fehlersituationen, um so deutlicher wird der Folgeeffekt, daß das Mikroprogramm wegen der notwendigen Abfragen bezüglich dieser Sonderfälle immer aufwendiger wird. Wegen der Auswirkung auf praktische Anwendungen wird bei Eingabe mindestens eines Faktors Null auf den Ablauf der Multiplikation verzichtet. Auffällig ist der Unterschied zwischen der einfachsten Form der Multiplikation durch Betrag und Vorzeichen und der Division im 2-Komplement. Man erkennt das bereits an der Länge des dargestellten Mikroprogramms.

Die Zahlenwerte beschränken sich auf den Bereich —1 bis +1, ohne diese beiden Werte jeweils einzubeziehen. Überschreitet man diesen Bereich, tritt ein Zahlenüberlauf ein, der eine grundsätzliche Fehlersituation bei der Benutzung von Festkommazahlen andeutet, die für praktische Anwendungen abgefangen werden muß.

Ein weiterer Punkt ist die Beachtung der doppelten Wortlänge für die Multiplikation, wobei keineswegs alle Ergebnisse auftreten können, die im Doppelwort darstellbar sind. Ein anderer Wert führt umgekehrt bei der Division zu einem Divisionsrest. Die Algorithmen erfassen diese Möglichkeit der Darstellung für alle eingebbaren Fälle korrekt, d.h. Ergebnis und Rest sind vorzeichengerecht ablesbar.


Beispiele zur Interpretation


Durch die Darstellung von Ergebnis und Rest erlaubt die Division folglich eine über die Multiplikation deutlich hinausgehende Darstellung von Ergebnissen, wobei beim Rest daran zu denken ist, daß die Division noch nicht ausgeführt ist.

Als erstes Beispiel soll die normale Division erläutert werden, die selbstverständlich ist, solange der Rest 0 auftritt. Dies läßt sich z.B. durch die Eingabe Dividend = 2-7, Divisor = 0,5 erreichen: Ergebnis 2-6, Rest 0.

Was passiert bei kleineren Zahlen? Einfügen von einigen führenden Nullen erlaubt beispielsweise die Ausführung von 2-9 : 0,5. Hier wird der Quotient Null, da 2-8 nicht in Registern der Länge 8 darstellbar ist, der Zahlenbereich unterschritten wird. Der Rest ist nun 0,25, d.h. 2-9 . 27, die Division ist nicht ausgeführt. Entsprechend ergibt 0,25 : 0,5 = 0,5 das erwartete Ergebnis 2-8 = 0,5 2-7= 0,5 : 128.

Wie man aus diesem Beispiel schließen kann, lassen sich auch ganze Dualzahlen und der Ablauf ihrer Division interpretieren. Gibt man z.B. (abgesehen von der Vorzeichenstelle) 11:15 ein und benutzt das Verfahren Betrag und Vorzeichen, so erscheinen dezimal die Werte
0,6875 : 0,9375,
da ja auf den Bereich zwischen —1 und +1 normiert werden muß, die Zahlen also als Sechszehntel eingegeben sind. Direkte Ausführung des Ablaufs zeigt das Ergebnis
0,7265625 Rest 0,8125.

Wie sind diese beiden Zahlen zu interpretieren, obwohl doch das Ergebnis 0,7333... zu erwarten ist? Offenbar entspricht der Ergebniswert dem Inhalt des Ergebnisregisters Q, auf 8 Dualstellen einschließlich des Vorzeichens beschränkt. Also ist der Rest der Inhalt des Akkumulators, der bei Abbruch der Division nach 7 bzw. 8 Schritten übrig bleibt. Für ihn ist die Division noch nicht ausgeführt, wie der Name Rest unmittelbar ausdrückt. Entsprechend ist dessen Interpretation. Die Dualangaben erlauben als kleinsten Wert 2-7, also ist die Dualzahlendarstellung als x/128 zu lesen. Im vorliegenden Fall ist das Ergebnis 93/128 gleich 0,7265625, während der Rest 104/128 darstellt. Seine Bestimmung ist leicht möglich, wenn man sich die Grundbeziehung der Division noch einmal klar macht:

DVD : DVR = 11 : 15 = 88 : 120 = 93 / 128 + R.

Diese Gleichung läßt sich nach R auflösen, so daß R = —93 / 128 + 88 / 120 = 13 / 1920 oder R = 0,006770833.

Addiert man diesen Wert des Restes zu dem Ergebnis des Quotienten von 93/128 erhält man

0,7265625
+ 0,00677083...
0,73333333... wie erwartet.

Verallgemeinert läßt sich feststellen, daß das Divisionsergebnis der Wortlänge entsprechend berechnet wird, der Rest durch den Divisor dividiert dessen Korrektur auf den exakten Wert ermöglicht. Die normale Division verzichtet folglich darauf einfach wegen der vorgegebenen Wortlänge.

Ein anderes Beispiel unterstreicht diese Aussagen noch einmal. Was passiert bei der Division
01011 : 01110 ?

Da beide Zahlen positiv sind, bleibt unerheblich, ob sie als Betrag mit Vorzeichen oder als 2-Komplement aufgefaßt werden. Ihre Eingabe ergänzen in beiden Fällen 0 bis zur 8. Stelle, wobei dezimal entsteht:
0,6875 : 0,875 = 0, 78125 Rest 0,5 oder
01011 : 01110 = 01100100 Rest 01000000.

Nach R aufgelöst entsteht
R = — 100/128 + 88/128 . 128/112 = — 100/128 + 88/112 = 4/896 = 1/224,
also Q = 0,78125
+ 0,0044642857
0,7857142857
d.h. wiederum erhält das Ergebnis den größtmöglichen als x/128 darstellbaren Wert, der Rest die notwendige Korrektur.


Berücksichtigung der Vorzeichen


Bisher sind nur positive Zahlen betrachtet worden. Natürlich sollten alle Kombinationen von positiven und negativen Vorzeichen zu dem gleichen korrekten Ergebnis führen. Dies bedeutet, daß der Ablauf entweder durch Auswahl des Vorzeichens in der Darstellung Betrag mit Vorzeichen von vornherein feststeht, oder aber durch Wechsel zwischen Addition und Subtraktion bei der Berücksichtigung des 2-Komplements bestimmt wird. Der Aufruf "Tabelle" bei der Visualisierung macht das deutlich. Dabei ist zu erwarten, daß bei der Division Ergebnis und Rest das gleiche Vorzeichen haben müssen.

Wie bereits bei der Eingabe der unterschiedlichen Möglichkeiten gesagt wurde, ist das zunächst nicht der Fall. Der Rest hat vielmehr stets das Vorzeichen des Dividenden, da er ja noch durch den Divisor zu dividieren ist. Erst anschließend haben Ergebnis und Rest das gleiche Vorzeichen. Wie bei nur positiven Zahlen entsteht der korrekte Endwert durch die Ergänzung von Ergebnis und Rest, wobei beide positiv oder negativ, nicht aber unterschiedlich sein können. Der positive Fall wurde in den Beispielen erläutert. Tritt 0 als Ergebnis oder Rest auf, entfällt das Vorzeichen im 2-Komplement, da hier nur eine Null darstellbar ist.

Zurück

© asfour@ira.uka.de

KIT Logo Logo Informatikfakultät top-link top