[go: up one dir, main page]

DE3440680A1 - Verfahren und vorrichtung zur dezimaldivision - Google Patents

Verfahren und vorrichtung zur dezimaldivision

Info

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
Application number
DE19843440680
Other languages
English (en)
Other versions
DE3440680C2 (de
Inventor
Kazunori Hatano Kanagawa Kuriyama
Kenichi Sagamihara Kanagawa Wada
Akira Hatano Kanagawa Yamaoka
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of DE3440680A1 publication Critical patent/DE3440680A1/de
Application granted granted Critical
Publication of DE3440680C2 publication Critical patent/DE3440680C2/de
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/491Computations with decimal numbers radix 12 or 20.
    • G06F7/4915Multiplying; Dividing
    • G06F7/4917Dividing

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)

Patentansprüche
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,
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,
daß die Verarbeitung beendet wird, wenn die Anzahl erfaßter negativer Subtraktionsergebnisse eine vorgegebene Anzahl erreicht.
3. Verfahren nach Anspruch 1,
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,
daß das zweite Register in einem Teilbereich den Ausgang des Zählers speichert.
5. Verfahren nach Anspruch 1,
dadurch gekennzeichnet,
daß die Subtraktionsverarbeitung in Schritt c) und der Schiebevorgang parallel ausgeführt werden.
6. Verfahren nach Anspruch 1,
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.
DE19843440680 1983-11-07 1984-11-07 Verfahren und vorrichtung zur dezimaldivision Granted DE3440680A1 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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進数除算装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
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