DE3440680A1 - Verfahren und vorrichtung zur dezimaldivision - Google Patents
Verfahren und vorrichtung zur dezimaldivisionInfo
- Publication number
- DE3440680A1 DE3440680A1 DE19843440680 DE3440680A DE3440680A1 DE 3440680 A1 DE3440680 A1 DE 3440680A1 DE 19843440680 DE19843440680 DE 19843440680 DE 3440680 A DE3440680 A DE 3440680A DE 3440680 A1 DE3440680 A1 DE 3440680A1
- Authority
- DE
- Germany
- Prior art keywords
- register
- subtraction
- result
- content
- dividend
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/491—Computations with decimal numbers radix 12 or 20.
- G06F7/4915—Multiplying; Dividing
- G06F7/4917—Dividing
Landscapes
- Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Executing Machine-Instructions (AREA)
Description
HITACHI, LTD., Tokyo Jap an
Verfahren und Vorrichtung zur Dezimaldivision
Die Erfindung betrifft ein Verfahren und eine Vorrichtung zur Dezimaldivision.
Die Dezimaldivision benötigt verhältnismäßig viele Verarbeitungszyklen,
weshalb es schwierig ist, die Verarbeitungsgeschwindigkeit zu erhöhen.
Figur 1 zeigt eine herkömmliche Dezimaldivisionsvorrichtung, die zwei Register A und C, einen Addierer/Subtrahierer 1 ,
ein Schieberegister 2 , ein Subtraktionszähler 3 und einen Übertragsdetektor 4 enthält. Zur Division wird in Register A
ein Dividend und in Register C ein Divisor abgespeichert. Der Addierer/Subtrahierer 1 vermindert den Dividenden um den
Betrag des Divisors und gibt das Ergebnis 1A über ein Wählglied 5 an das Register A zurück. Wenn das Subtraktionsergebnis
positiv oder null ist, erfaßt der Übertragsdetektor 4 ein Übertragssignal und öffnet ein Tor 10, so daß der Wert
des Subtraktionszählers 3 "1" wird. Der Inhalt des Registers C
68 0-31 8301 354DE1/AtAl
wird wiederholt vom Inhalt des Registers A abgezogen, bis das Subtraktionsergebnis negativ wird; das Ergebnis 1A
wird zum Register A zurückgegeben und der Wert des Subtraktionszählers 3 wird immer dann inkrementiert, wenn ein
Übertrag auftritt.
Wenn das Subtraktionsergebnis negativ wird, ergibt der Subtraktionszähler
3 die Ergebnisziffer als die höchstwertige Ziffer des Quotienten. Gleichzeitig wird der Inhalt des Registers A
und der des Registers C vom Addierer/Subtrahierer 1 addiert und dann zum Ergebnis der letzten positiven Subtraktion zurückgegeben;
das Ergebnis wird im Register A über den Wähler 5 gespeichert. Danach wird der Inhalt dieses Registers A durch
das Schieberegister 2 um eine Ziffer nach links verschoben. Das heißt, es wird um 4 Bitstellen nach links verschoben,
wenn eine Binärziffer durch 4 Bit dargestellt ist. Das Ergebnis 2A wird zum Register A über das Wählglied 5 zurückgegeben.
Danach wird der Inhalt dieses Registers A als neuer Dividend um den Betrag des Divisors im Register C vermindert und das
Subtraktionsergebnis zum Register A über das Wählglied 5 zurückgegeben. Der Wert des Subtraktionszählers 3 wird um
+1 durch den vom Übertragsdetektor 4 erfaßten Übertrag inkrementiert und die Zahl aufeinanderfolgender Ziffern des Quotienten
wird gezählt.
Um die Verarbeitungsgeschwindigkeit der Dezimaldivisiönsvorrichtung
von Figur 1 zu erhöhen, müssen folgende Fragen gelöst werden:
1. Die Verarbeitung erfolgt bei dieser Vorrichtung in einer
doppelten Schleife, einer Subtraktionsschleife und einer Schiebeschleife für jede Ziffer und diese Schleifen müssen
zeitlich aufeinanderfolgend ausgeführt werden;
2. Der Vorgang des Inkrementierens des Subtraktionszählers 3 um +1 (sobald ein Übertrag auftritt)zur Erzeugung der
Ergebnisziffer, erfolgt notwendigerweise getrennt von der obenbeschriebenen Schleifenverarbeitung;
3. Der Additionsvorgang des Inhalts des Registers C zum Inhalt des Registers A ist notwendig, um für eine einzelne
Ziffer einen Teilquotienten zu erhalten.
Aus der ' JP-OS No. 6587/1981 ist bereits eine Dezimaldivisionsvorrichtung
bekannt, die eine Lösung der Frage 3.) vorschlägt.
In Figur 2 ist ein Blockschaltbild der Dezimaldivisionsvorrichtung,
die die JP-OS vorschlägt, dargestellt.
Die in Figur 2 "dargestellte Vorrichtung enthält zusätzlich ein
Register B. Subtraktionsergebnisse vom Addierer/Subtrahierer 1 werden abwechselnd in Register A und Register B gespeichert,
und wenn kein Übertrag mehr auftritt, wird der Inhalt desjenigen Registers A oder B, das ein positives Ergebnis speichert,
vom Schieberegister 2 um eine Ziffer verschoben und dann zum Register A oder B zurückgegeben, woraufhin der Subtraktionsvorgang wiederholt wird.
Um diesen Vorgang genauer zu erläutern, wird die Aufgabe 1210 : 6 = 201 mit dem Rest 4 berechnet:
a) Zuvor wird "01210000" in Register A und "06000000" linksbündig in Register C geladen.
b) Dann wird der Inhalt des Registers C vom Inhalt des Registers A vom Addierer/Subtrahierer 1 abgezogen (da "06000000"
größer als "01210000" ist, wird das Komplement von "06000000", das ist 100000000 - 06000000 = 94000000 addiert). Das Subtraktionsergebnis,
das ist "95210000" wird in Register B gespeichert. Dabei tritt kein Übertrag auf.
c) Der Inhalt des Registers A wird um eine Ziffer (4 Bitstellen)
nach links verschoben und "12100000" in Register A gespeichert.
d) Der Inhalt des Registers C"1 wird vom Inhalt des Registers A
mittels des Addierer/Subtrahierers 1 abgezogen, und das Ergebnis "06100000" in Register B gespeichert. Da in diesem
Fall ein Obertrag auftritt, ergibt der Wert des Subtraktionszählers
3 "1".
e-) Jetzt wird der Inhalt des Registers C vom Inhalt des Registers
B abgezogen und das Ergebnis "00100000" in Register A gespeichert. Da in diesem Fall ein Übertrag auftritt, ergibt
der Wert des Subtraktionszählers 3 "2".
f) Der Inhalt des Registers C wird vom Inhalt des Registers A
abgezogen und das Ergebnis "94100000" in Register B gespeichert. In diesem Fall wird der Inhalt des Subtraktionszählers 3 gelöscht, da kein Übertrag auftritt.
g) Der Inhalt des Registers A wird um vier Bitstellen nach
links verschoben und "01000000" im Register A gespeichert.
h) Der Inhalt des Registers C wird vom Inhalt des Registers A subtrahiert und das Ergebnis in Register B gespeichert.
Da kein Übertrag aufgetreten ist, wird der Inhalt des Registers A wieder um 4 Bitstellen nach links verschoben
und "10000000" im Register A gespeichert.
i) Jetzt wird der Inhalt des Registers C vom Inhalt des Registers A abgezogen und das Ergebnis "04000000" in
Register B gespeichert. Da in diesem Fall kein Übertrag auftritt, wird der Wert des Subtraktionszählers 3
ti -I ti
j) Der Inhalt des Registers C wird dann vom Inhalt des Registers B abgezogen, und das Ergebnis "98000000" in Register
A gespeichert. Da in diesem Fall kein Übertrag auftritt, wird der Subtraktionszähler 3 zurückgesetzt, und
das Ergebnis wird als Ergebnisziffer verwendet.
Aus den obigen Erläuterungen folgt, daß bei der mit der in Figur 2 dargestellten Vorrichtung durchgeführten Division
der Inhalt des anderen Registers verwendet werden kann, auch wenn der Inhalt jedes der Register A oder B negativ ist. Somit
kann die Verarbeitungszeit bei der Addition des Divisors zum negativen Subtraktionsergebnis verkürzt werden. Da der Rest
in einem der Register A oder B steht (im Register B beim oben beschriebenen Beispiel) kann dieser einfach ausgelesen werden.
Da bislang die obengenannten Fragen 1 und 2 noch ungelöst sind, konnte keine weitere Beschleunigung des Dezimaldivisionsvorgangs
erreicht werden.
Es ist deshalb Aufgabe der Erfindung, eine Verfahren und eine Vorrichtung zur Dezimaldivision zu ermöglichen, die die obengenannten
Fragen des herkömmlichen Dezimaldivisionssystems lösen können und die Rechenzeit durch Vermeidung der zum Darstellen
des Quotienten und des Rests nötigen Vorverarbeitung ohne zeitlich aufeinanderfolgende Ausführung der Subtraktionsschleife und der Einziffer-Schiebeschleife oder ohne Addition
des Vorzeichen -Codes zum Ergebnis, verkürzen
Die obige Aufgabe wird in einem Dezimaldivisionssystem, das den Divisor vom Dividenden zumindest einmal subtrahiert und die
zur Berechnung der nächsten Ziffer, wenn das Subtraktionsergebnis negativ wird, nötige Verschiebung der Ziffer ausführt,
erfindungsgemäß dadurch gelöst, daß die Zifferverschiebung
gleichzeitig mit der Subtraktion des Divisors vom Dividenden ausgeführt wird und daß diese Subtraktion so ausgeführt wird,
daß das Subtraktionsergebnis den Quotienten und einen das Vorzeichen des Subtraktionsergebnisses darstellenden
Code enthält.
Die Erfindung wird im folgenden anhand der Zeichnung näher beschrieben. Es zeigen:
Fig. 3 ein Blockschaltbild eines erfindungsgemäßen Ausführungsbeispiels
einer Dezimaldivisionsvorrichtung;
Fig. 4 ein den Divisionsvorgang des in Figur 3 dargestellten erfindungsgemäßen Ausführungsbeispiels erläuterndes
Schema.
Das in Figur 3 dargestellte Ausführungsbeispiel der erfindungsgemäßen
Dezimaldivisionsvorrichtung weist ein Register B für den Dividenden und das Subtraktionsergebnis, ein Register C
für den Divisor, einen Addierer/Subtrahierer 1, ein Schieberegister
2, einen Subtraktionszähler 3, einen Übertragsdetektor 4, der das Übertragssignal vom Addierer/Subtrahierer 1
erfaßt, ein Register A' für das Ergebnis des Schieberegisters und das Ergebnis des Subtraktionszählers 3, ein Wählglied 6,
das die Ausgänge des Registers A' und B wählt und eine Inkrementierschaltung
7, die zum Inhalt des Subtraktionszählers 3 eine 1 addiert, sobald der Übertragsdetektor 4 das Übertragssignal erfaßt, auf.
Im folgenden wird die Funktion der in Figur 3 dargestellten Vorrichtung beschrieben:
a) Zuerst wird durch den Addierer/Subtrahierer 1 der Inhalt des Registers C, das den Divisor speichert, vom Inhalt des
Registers, das den Dividenden speichert, gewöhnlich Register B, und,wenn das Ergebnis der vorigen Subtraktion
negativ ist, Register A'j, subtrahiert, das Subtraktionsergebnis immer wenn eine Subtraktion ausgeführt wurde,
abgespeichert und gleichzeitig die Anzahl der Subtraktionen, die ein positives oder Null-Ergebnis erbrachten, durch den
Subtraktionszähler 3 gezählt.
b) Der Inhalt des Registers, das den Dividenden oder das Subtraktionsergebnis
speichert,dß.s gewöhnlich im Register B
oder wenn das Ergebnis der vorangehenden Subtraktion negativ ist, im Register A' steht, wird parallel zum Verarbeitungsschritt
a vom Schieberegister 2 verschoben, und gleichzeitig wird der Inhalt des Subtraktionszählers 3 im untersten
Teil des Registers A' abgespeichert.
c) Wenn das Subtraktionsergebnis negativ wird und der Addierer/ Subtrahierer 1 kein Übertragssignal erzeugt, werden die
Verarbeitungsschritte a) und b) in einer erforderlichen Anzahl von Wiederholungen mit dem Inhalt des Registers A',
der einen neuen Dividenden darstellt, wiederholt.
Das Schieberegister 2 bewirkt, da die Vorrichtung Dezimalzahlen verarbeitet, bei denen jeweils eine Ziffer durch 4 Bitstellen
dargestellt wird, eine Verschiebung um eine Ziffer, das sind vier Bitstellen^nach links. Die in Figur 3 dargestellte Vorrichtung
kann beispielsweise in einem Computer mit mikroprogrammierter Steuerung verwendet werden. In diesem Fall wird jeder
Verarbeitungsschritt von in einem Steuerspeicher gespeicherten Mikrobefehlen gesteuert.
Der mit der in Figur 3 dargestellten Vorrichtung ausgeführte Divisionsvorgang wird anhand des Rechenbeispiels 1210 : 6 =
mit dem Rest 4 anhand der in Figur 4 dargestellten Tabelle näher erläutert.
In Figur 4 sind die Registerinhalte für jeden Verarbeitungsschritt des erfindungsgemäßen Dezimaldivionssystems tabellarisch
dargestellt.
In der folgenden Beschreibung stellt das Symbol "C", beispielsweise
in "000121OC"^ ein positives oder negatives Subtraktionsergebnis,
den Vorzeichencode dar. Dieses Symbol ist so gewählt, daß es nicht in den Bereich der Ziffer 0 bis 9 fällt. Für
dieses Symbol sind vier Bitstellen (eine Ziffer) am rechten Ende jedes Operanden reserviert. In Figur 4 stellt C den positiven
Vorzeichen-Code dar.
a) Zuerst werden die Ziffern des Dividenden und des Divisors in vorgegebener Weise angeordnet und der Dividend im Register
B und der Divisor im Register C abgespeichert. Die Ziffern werden so angeordnet, daß der Dividend vom linksbündigen
Zustand um eine Ziffer nach links und daß der Divisor vom linksbündigen Zustand um eine Stelle nach rechts verschoben
sind, wobei der ganz rechts stehende Vorzeichencode auf Null gesetzt ist. Die Bezeichnung "linksbündig" gibt den
Zustand an, bei dem , wenn die Registerlänge R-Byte und die Operandendatenlänge η-Byte betragen (mit der Voraussetzung,
daß R>η ist), die n-Byte-Operandendaten im
oberen Teil (linken Seite) gespeichert sind und die verbleibenden R-n Byte mit "0" aufgefüllt sind. Beim
in Figur 4 dargestellten Beispiel beträgt die Registerlänge R = 4 Byte, die Dividendenlänge 4 Byte und die
Divisorlänge 1 Byte. Wenn, wie in diesem Beispiel der Dividend 1210 und der Divisor 6 sind, wird der Dividend
"000121OC" vom linksbündigen Zustand um eine Ziffer nach links verschoben und als "00121OCO" in Register B
gespeichert, wohingegen der Divisor 6C zu 60 durch Nullsetzen des Vorzeichencodes C verändert wird und dann um eine
Ziffer vom linksbündigen Zustand "60000000" nach rechts verschoben wird und als "06000000" in Register C gespeichert
wird.
Auf diese Weise werden in Schritt 0 gemäß Figur 4 der Dividend und der Divisor jeweils in die Register B und C geladen.
b) Der Wert des Subtraktionszählers 3 wird auf "0" zurückgesetzt.
c) Zu Beginn wird das Wählglied 6 so eingestellt, daß der Inhalt des Registers B gewählt und über eine Leitung 6A ausgegeben
wird.
d) Der Inhalt des Registers C , der den Divisor darstellt, wird vom Inhalt des Wählglieds 6, der zunächst den Dividenden
auf der Ausgangsleitung 6A darstellt, durch den Addierer/ Subtrahierer 1 abgezogen und das Subtraktionsergebnis in
Register B gespeichert. Der Übertrag vom Addierer/Subtrahierer 1 wird zum Übertragsdetektor 4 gesendet. Gleichzeitig
wird das Schiebeergebnis des durch das Schieberegister 2 um eine Ziffer nach links verschobenen Inhalts
des Wählglieds und das Ergebnis des Subtraktionszählers 3 in Register A1 jeweils über die Leitungen 2A und 3A gespeichert.
Die Leitung 3A ist mit dem niedrigstwertigen Byte ' (ganz
rechts) des Registers A' und die Leitung 2A mit den verbleibenden Byte verbunden (bei Schritt 1 in Figur 4). Weil
der Divisor "06000000" größer als der Dividend "001210CO" ist, wird im Schritt 0 in Figur 4 das Komplement "94000000"
des Divisors zum Inhalt "00121OCO" des Registers B zur Ausführung
der Subtraktion addiert und das Ergebnis "94121OCO" in das Register B gespeichert. Da in Schritt 0 kein Übertrag
auftritt, bleibt der Wert des Subtraktionszählers "0"
und der Wert "OC" wird über die Leitung 3A zum Register A1
übertragen und in die niedrigswertigen zwei Ziffern (1 Byte) des Registers A1 gespeichert. Der Ausgang des Schieberegisters
2 "0121OC" wird über die Leitung 2A zum Register A'
übertragen und in dessen obere sechs Ziffern (3 Byte) gespeichert.
e) Wenn der Verarbeitungsschritt d) ergibt, daß die Differenz
von Dividend und Divisor negativ wird, d.h. wenn der Übertrag "0" ist, werden der durch das Schieberegister
2 um eine weitere Stelle nach links verschobene Wert des Wählglieds 6 und der Wert des Subtraktionszählers
3 beim nächsten Schritt (Schritt 3) jeweils über die Leitungen 2A und die Leitung 3A in das Register A' gespeichert.
Der Inhalt des Registers A1 wird dann "210COOOC".
f) Wenn das Subtraktionsergebnis der Subtraktion von Dividend
und Divisor beim vorhergehenden Schritt als Ergebnis des unter d) beschriebenen Vorgangs positiv oder Null wird,
d.h., wenn der Übertrag "1" ist, werden der Inhalt des Subtraktionszählers 3 um +1 inkrementiert und der Inhalt
des Registers B vom Wählglied 6 ausgewählt und über die Ausgangsleitung 6A dem Addierer/Subtrahierer 1 und dem
Schieberegister 2 zugeführt. Der in d) beschriebene Verarbeitungsvorgang wird wiederholt.
Beispielsweise wird der Inhalt des Registers C vom Inhalt des Registers B in Schritt 4 subtrahiert, da das Operationsergebnis
in Schritt 3 angibt, daß der Übertrag "1" ist. Dann wird das Subtraktionsergebnis "001OCOOC" in Register B und gleichzeitig
der durch das Verschieben des Inhalts des Registers B um eine Ziffer nach links erhaltene Wert am Ausgang des Schieberegisters
2 und das Ergebnis des Subtraktionszählers 3 in das Register A' jeweils über die Leitungen 2A und 3A gespeichert
(Schritt 4). Da beim vorhergehenden Schritt der Übertrag "1" und der Wert des Subtraktionszählers 3 "2"
ergaben, wird das Ergebnis der Subtraktion des Inhalts des Registers C vom Inhalt des Registers B (hier wird das Komplement
addiert) , d.h. "94", beim nächsten Schritt 5 auf Null gesetzt und der Inhalt des Registers A' auf der Ausgangsleitung
6A des Wählglieds 6 ausgegeben und danach zur Verarbeitung gemäß d) zurückgekehrt.
Beispielsweise zeigt Figur 4, daß die in Schritt 1 gewonnene Differenz zwischen dem Dividenden X und Divisor Y negativ ist,
das heißt, daß der Übertrag "0" ist. Deshalb erfolgt im nächsten Schritt 2 die Subtraktion oder die Addition des Komplements
"94000000" des Divisors Y zum Inhalt "01210C0C" des Registers
A1, und das Ergebnis "95210C0C" wird in Register B abgespeichert.
Gleichzeitig wird der durch das Verschieben des Inhalts des Registers A1 durch das Schieberegister 2 erhaltene Wert
und das Ergebnis des Subtraktionszählers 3 im Register A1 jeweils
über die Leitung 2A und die Ausgangsleitung 3A abgespeichert. Der Inhalt des Registers A' wird dann "121OCOOC"
(Schritt 2).
Da der sich bei Schritt 2 ergebende Übertrag ebenfalls "0" ist, wird der Inhalt des Registers C im nächsten Schritt 3
in derselben Weise wie beim vorigen Schritt abgezogen. In diesem Fall ist' die Differenz zwischen Dividend und Divisor
positiv und im Register B wird der Wert "0610COOC" abgespeichert. Der Wert des Subtraktionszählers 3 wird auf Null zurückgesetzt,
gleichzeitig wird der durch das Verschiebung um eine Ziffer nach links erhaltene Inhalt des Registers A'
"1OCOOC" in Register B abgespeichert. Auf der Leitung 2A wird das Ergebnis der Verschiebung des Inhalts des Registers
B um eine Ziffer nach links zusammen mit dem über die Ausgangsleitung 3A ausgegebenen Wert des Subtraktionszählers 3 , nämlich der Wert "010COOZC" in das Register A1
gespeichert (Schritt 5).
Da die Schritt 6, 7 und 8 in der gleichen Weise wie sie oben beschrieben wurden, ausgeführt werden, kann die Erklärung
dieser Schritte entfallen.
g) Die Vorgänge d), e) und f) werden N-mal ausgeführt, bis
ein Übertrag auftritt. Die Anzahl N läßt sich aus folgender Gleichung ermitteln, in der die Dividendenlänge durch
n1 Byte und die Divisorlänge durch n2 Byte angegeben sind: N = 2(n1 - n2) - 1.
Beispielsweise ergibt sich die vorgegebene Anzahl N für das in Figur 4 dargestellte Beispiel mit der Dividendenlänge
n1 = 4 Byte und der Divisorlänge n2 = 1 Byte als N = 2(n1 - n2) - 1 = 5. Wenn auf diese Weise die Anzahl der
Subtraktionen bei denen kein Übertrag auftritt 5 erreicht, liegt der Quotient mit einer gewünschten Ziffernanzahl vor.
In dem in Figur 4 dargestellten Beispiel wird die Subtraktion insgesamt 8-mal ausgeführt, wobei sich die Anzahl 8
aus 5 plus die Zahl 3, nämlich diejenige Anzahl von Subtraktionen, bei denen kein Übertrag auftrat, ergibt.
Als Ergebnis des in Figur 4 dargestellten Beispiels wird im Register A' der Wert "4C00201C" gespeichert. Das erste
Byte des Registers A' stellt den Rest mit Vorzeichen "4C" (+4) und die anderen 3 Byte den Quotienten "201C"
(+201) dar. Deshalb erhält man als Ergebnis der Rechnung 1210 : 6 den Wert 201 mit dem Rest 4.
Gemäß der obigen Beschreibung wird erfindungsgemäß der Inhalt
des Registers C vom Inhalt des Registers A' oder des Registers B abgezogen und das Subtraktionsergebnis in Register B gespeichert.
In diesem Fall wird der Inhalt des Registers B , wenn beim vorangehenden Schritt der Übertrag "1" ist und der
Inhalt des Registers A' verwendet, wenn der Übertrag "0" ist.
Auch am Anfang wird der Inhalt des Registers B verwendet. Gleichzeitig wird der Inhalt des Registers A' oder B vom
Schieberegister 2 um eine Ziffer verschoben und dann in Register A' gespeichert. In diesem Fall wird ebenfalls der Inhalt
des Registers A' oder des Registers B , das für die Subtraktion bei diesem Schritt verwendet wird , verschoben. Außerdem
wird der Ausgang des Subtraktionszählers 3 im niedrigstwertigen Byte des Registers A' gespeichert und eine Subtraktion
oder Verschiebung ausgeführt, während die Inhalt der Register A' und B den positiven oder negativen Vorzeichencode enthalten.
Das gewünschte Rechenergebnis kann in einem solchen Computer, der den Quotienten in den unteren (n1 - n2) Byte und den
Rest in den oberen n2 Byte und das Rechenergebnis in insgesamt n1 Byte speichert durch zyklischen Verschieben des
Endergebnisses des Registers A' um n2 Byte nach links dargestellt werden. Deshalb kann der Schritt, der den Quotienten und den Rest erzeugt
, weggelassen werden. Wenn der im letzten Schritt 8 im Register A' stehende Inhalt "4COOZOIC" um n2 = 1 Byte zyklisch
nach links verschoben wird, ergibt sich der Wert "00201C4C", bei dem der Quotient in den höherwertigen n1 - n2 = 3 Byte
und der Rest in dem niederwertigen n2 = 1 Byte stehen.
Gemäß der obigen Beschreibung wird im erfindungsgemäßen Dezimaldivisionssystem
der Vorgang der Subtraktion des Divisors vom Dividenden parallel mit der Übertragsverschiebung für die Berechnung
der nächsten Ziffer ausgeführt, wodurch der Schritt der Addition des Inhalts des Registers C als Divisor zum Inhalt
des Registers B entfallen kann. Außerdem wird gemäß der vorliegenden Erfindung die Subtraktion so ausgeführt, daß der Vorzeichencode
und das Zwischenergebnis des Quotienten zum Subtraktionsergebnis addiert werden, so daß gemäß der Erfindung
ebenfalls der Schritt der Addition des Vorzeichencodes zum Ergebnis und der Synthese des Quotienten und des Rest vermieden
sind. Aus diesem Grunde ermöglicht die vorliegende Erfindung eine Beschleunigung der Rechenschleife und der nachfolgenden
Verarbeitung.
- Leerseite -
Claims (4)
1. Verfahren zur Dezimaldivision in einem Rechenwerk mit
einem ersten Register, das einen Dividenden speichert, einem zweiten Register,
einem dritten Register, das einen Divisor speichert, einem Addierer/Subtrahierer und
einem Zähler,
einem Zähler,
gekennzeichnet durch folgende Schritte:-
a) Auswahl des Inhalts des ersten Registers;
b) Subtraktion des Inhalts des dritten Registers vom Inhalt
des gewählten Registers, Speichern des Subtraktionsergebnisses im ersten Register, Verschieben des gewählten
Inhalts um eine Ziffer und Speichern des Schiebeergebnisses im zweiten Register und
c) Erfassen, ob das Subtraktionsergebnis positiv , null oder negativ ist,
d) Erhöhen des Inhalts des Zählers, wenn das Ergebnis
der Subtraktion positiv oder null ist und Fortfahren mit Schritt a), und
e) Wählen des zweiten Registers, wenn das Subtraktionsergebnis
negativ ist und Fortfahren mit Schritt b).
680-31 8301 354DE1/AtAl
2. Verfahren nach Anspruch 1,
dadurch gekennzeichnet,
dadurch gekennzeichnet,
daß die Verarbeitung beendet wird, wenn die Anzahl erfaßter negativer Subtraktionsergebnisse eine vorgegebene Anzahl
erreicht.
3. Verfahren nach Anspruch 1,
dadurch gekennzeichnet,
dadurch gekennzeichnet,
daß der Divisor im dritten Register in einer um eine Ziffer vom linksbündigen Zustand nach rechts verschobenen Form,
bei der der Vorzeichenbereich auf Null zurückgesetzt ist, gespeichert ist.
4. Verfahren nach Anspruch 1,
dadurch gekennzeichnet,
dadurch gekennzeichnet,
daß das zweite Register in einem Teilbereich den Ausgang des Zählers speichert.
5. Verfahren nach Anspruch 1,
dadurch gekennzeichnet,
dadurch gekennzeichnet,
daß die Subtraktionsverarbeitung in Schritt c) und der Schiebevorgang parallel ausgeführt werden.
6. Verfahren nach Anspruch 1,
dadurch gekennzeichnet,
dadurch gekennzeichnet,
daß die Subtraktionsverarbeitung durch Addition des Komplements
des Divisors ausgeführt wird.
7. Verfahren zur Dezimaldivision
gekennzeichnet durch folgende Schritte:
Subtraktion eines Divisors B von einem Dividenden A und
Festhalten des Subtraktionsergebnisses C;
Verschiebung der Ziffer des Dividenden A und Festhalten des Schiebeergebnisses D; und
Wiederholung der obigen Verfahrensschritte bei Verwendung
des Subtraktionsergebnisses C als neuen Dividenden, wenn das Subtraktionsergebnis C positiv oder null ist und
bei Verwendung des Schiebeergebnisses D als neuen Dividenden, wenn das Subtraktionsergebnis C negativ ist.
8. Verfahren nach Anspruch 7, dadurch gekennzeichnet,
daß die Subtraktion und der Schiebevorgang parallel durchgeführt werden.
9. Verfahren nach Anspruch 7, dadurch gekennzeichnet,
daß die Verarbeitung so oft wiederholt wird, bis die Anzahl negativer Subtraktionsergebnisse eine vorgegebene
Anzahl N erreicht.
10. Verfahren nach Anspruch 9,
dadurch gekennzeichnet,
daß die vorgegebene Anzahl N aus folgender Formel ermittelt wird:
N = 2 χ (n1 - n2) - 1 ,
worin n1 die Länge des Dividenden A und n2 die Länge des Divisors B sind.
11. Dezimaldivisionsvorrichtung,
gekennzeichnet durch
ein erstes Register (B), das einen Dividenden speichert;
ein zweites Registers (A');
ein drittes Register (C), das einen Divisor speichert;
eine Wählschaltung, die den Inhalt des ersten oder zweiten Registers (B oder A') abhängig von einem ersten Signal
wählt;
einen Addierer/Subtrahierer (1), der den Inhalt des dritten Registers vom Inhalt des von der Wählschaltung ausgewählten
Registers (B oder A') subtrahiert und das Ergebnis der Subtraktion in das erste Register (B) speichert;
eine Schiebeschaltung (2), die den Inhalt des von der Wählschaltung
gewählten Registers (B oder A1) um eine Ziffer verschiebt und das Schiebeergebnis in das zweite Register
(A') speichert;
eine Detektorsschaltung (4), die erfaßt, ob das vom Addierer/ Subtrahierer (1) erzeugte Subtraktionsergebnis positiv oder
null ist und das erste Signal erzeugt; und
einen Zähler (3), der die Anzahl des von der Detektorschaltung (4) erzeugten ersten Signals zählt.
12. Dezimaldivisionsvorrichtung nach Anspruch 11, dadurch gekennzeichnet,
daß das zweite Register (A') in einem Teilbereich den Ausgang des Zählers (3) speichert.
13. Dezimaldivisionsvorrichtung nach Anspruch 11, dadurch gekennzeichnet,
daß der Dividend einen Code enthält, der ein positives oder negatives Vorzeichen angibt.
-ΞΙ 4. Dezimaldivisionsvorrichtung nach Anspruch 11,
dadurch gekennzeichnet,
daß das erste, zweite und dritte Register (B, A', C) eine Ziffer einer Dezimalzahl mit 4 Bit darstellen.
15. Dezimaldivisionsvorrichtung nach Anspruch 14, dadurch gekennzeichnet,
daß das zweite Register (A') den Ausgang des Zählers (3)
in seinem niedrigstwertigen Byte speichert.
16. Dezimaldivisionsvorrichtung nach Anspruch 11, dadurch gekennzeichnet,
daß die Schiebeschaltung (2) den Schiebevorgang parallel
mit dem Subtraktionsvorgang des Addierers/Subtrahierers (1) ausführt.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP58208724A JPS60101640A (ja) | 1983-11-07 | 1983-11-07 | 10進除算装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| DE3440680A1 true DE3440680A1 (de) | 1985-05-23 |
| DE3440680C2 DE3440680C2 (de) | 1989-11-23 |
Family
ID=16561028
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE19843440680 Granted DE3440680A1 (de) | 1983-11-07 | 1984-11-07 | Verfahren und vorrichtung zur dezimaldivision |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US4692891A (de) |
| JP (1) | JPS60101640A (de) |
| DE (1) | DE3440680A1 (de) |
Families Citing this family (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS63245518A (ja) * | 1987-03-31 | 1988-10-12 | Toshiba Corp | 除算演算装置 |
| US5027309A (en) * | 1988-08-29 | 1991-06-25 | Nec Corporation | Digital division circuit using N/M-bit subtractor for N subtractions |
| JPH02194430A (ja) * | 1989-01-24 | 1990-08-01 | Oki Electric Ind Co Ltd | 除算器 |
| US5016210A (en) * | 1989-11-15 | 1991-05-14 | United Technologies Corporation | Binary division of signed operands |
| US5103420A (en) * | 1989-12-04 | 1992-04-07 | Dror Avnon | Method and apparatus for srt division using gray coded quotient bit signals |
| US6173305B1 (en) * | 1993-11-30 | 2001-01-09 | Texas Instruments Incorporated | Division by iteration employing subtraction and conditional source selection of a prior difference or a left shifted remainder |
| US6058473A (en) * | 1993-11-30 | 2000-05-02 | Texas Instruments Incorporated | Memory store from a register pair conditional upon a selected status bit |
| NZ524378A (en) * | 2003-02-24 | 2004-12-24 | Tait Electronics Ltd | Binary shift and subtract divider for phase lock loops |
| US7149767B2 (en) * | 2003-05-12 | 2006-12-12 | International Business Machines Corporation | Method and system for determining quotient digits for decimal division in a superscaler processor |
| US7467174B2 (en) * | 2004-09-23 | 2008-12-16 | Wisconsin Alumni Research Foundation | Processing unit having decimal floating-point divider using Newton-Raphson iteration |
| US7519649B2 (en) * | 2005-02-10 | 2009-04-14 | International Business Machines Corporation | System and method for performing decimal division |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE1190700B (de) * | 1961-09-20 | 1965-04-08 | Ibm | Arithmetische Einheit fuer einen programmgesteuerten Digitalrechner |
| US3621218A (en) * | 1967-09-29 | 1971-11-16 | Hitachi Ltd | High-speed divider utilizing carry save additions |
| JPS566587B2 (de) * | 1976-05-28 | 1981-02-12 |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| NL7101257A (de) * | 1971-01-30 | 1972-08-01 | ||
| JPS6051132B2 (ja) * | 1980-12-17 | 1985-11-12 | 株式会社日立製作所 | オ−バラン補正方式 |
| US4466077A (en) * | 1981-09-25 | 1984-08-14 | International Business Machines Corporation | Method and apparatus for division employing associative memory |
| JPS58140846A (ja) * | 1982-02-16 | 1983-08-20 | Hitachi Ltd | 2進化10進数除算装置 |
-
1983
- 1983-11-07 JP JP58208724A patent/JPS60101640A/ja active Granted
-
1984
- 1984-11-06 US US06/668,842 patent/US4692891A/en not_active Expired - Lifetime
- 1984-11-07 DE DE19843440680 patent/DE3440680A1/de active Granted
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE1190700B (de) * | 1961-09-20 | 1965-04-08 | Ibm | Arithmetische Einheit fuer einen programmgesteuerten Digitalrechner |
| US3621218A (en) * | 1967-09-29 | 1971-11-16 | Hitachi Ltd | High-speed divider utilizing carry save additions |
| JPS566587B2 (de) * | 1976-05-28 | 1981-02-12 |
Also Published As
| Publication number | Publication date |
|---|---|
| US4692891A (en) | 1987-09-08 |
| DE3440680C2 (de) | 1989-11-23 |
| JPH0479015B2 (de) | 1992-12-14 |
| JPS60101640A (ja) | 1985-06-05 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE4302898C2 (de) | Arithmetische Recheneinheit mit Akkumulierfunktion | |
| DE2246968C2 (de) | Einrichtung zur Multiplikation zweier Gleitkommazahlen | |
| DE2523860C3 (de) | Vorrichtung zur digitalen, linearen Interpolation einer fabulierten Funktion | |
| DE2311220A1 (de) | Digital-informations-verarbeitungsvorrichtung zur zeichenerkennung | |
| DE69130852T2 (de) | Verarbeitungsmechanismus zur Verschachtelung in einem Schleifensteuersystem | |
| DE2712224A1 (de) | Datenverarbeitungsanlage | |
| DE3229452C2 (de) | Anordnung zur Durchführung von arithmetischen und logischen Operationen | |
| DE1197650B (de) | Parallel-Addierer | |
| DE3440680A1 (de) | Verfahren und vorrichtung zur dezimaldivision | |
| DE68927652T2 (de) | Dividierschaltung für ganze Zahlen, versehen mit einer Überlaufdetektionsschaltung | |
| DE3303269C2 (de) | ||
| DE3447729A1 (de) | Verfahren und vorrichtung zur dezimal-multiplikation | |
| DE3340362C2 (de) | ||
| DE3447634C2 (de) | ||
| DE3434777C2 (de) | ||
| EP0265555A1 (de) | Verfahren und Schaltungsanordnung zur Addition von Gleitkommazahlen | |
| DE3302013C2 (de) | ||
| DE2203143B2 (de) | Rechenanordnung zum Dividieren von Dezimalzahlen | |
| DE3132611C2 (de) | ||
| DE3785624T2 (de) | Digitaler signalprozessor mit dividierfunktion. | |
| DE3302885A1 (de) | Verfahren und vorrichtung zur multiplikation | |
| DE1549485C3 (de) | Anordnung zur Division binärer Operanden ohne Rückstellung des Restes | |
| DE1549461C3 (de) | ||
| DE1259122B (de) | Schaltungsanordnung zur Durchfuehrung verkuerzter Multiplikationen oder Divisionen | |
| DE1234055B (de) | Anordnung zur Addition oder Subtraktion |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| OP8 | Request for examination as to paragraph 44 patent law | ||
| D2 | Grant after examination | ||
| 8364 | No opposition during term of opposition | ||
| 8339 | Ceased/non-payment of the annual fee |