Besprechen Sie die Division vorzeichenloser Ganzzahlen mithilfe des Divisionsalgorithmus. Einige Divisionsalgorithmen werden auf Papier implementiert, andere auf digitalen Schaltkreisen. Es gibt zwei Divisionsalgorithmen: den langsamen Divisionsalgorithmus und den schnellen Divisionsalgorithmus. Zu den langsamen Divisionsalgorithmen gehören Wiederherstellungsalgorithmen, Nicht-Ausführungs-Wiederherstellungsalgorithmen, SRT und Nicht-Wiederherstellungsalgorithmen.
In diesem Tutorial besprechen wir den Wiederherstellungsalgorithmus unter der Annahme 0 Lösungsmethode
Hier verwenden wir Register Q zum Speichern des Quotienten, Register A zum Speichern des Rests und M zum Speichern des Divisors. Der Anfangswert von A bleibt bei 0 und sein Wert wird wiederhergestellt, weshalb die Methode die Division fortsetzt.
Register mit Wert initialisieren,
Register mit Wert initialisieren, p>
Q = Dividende,
A = 0,
N = Dividendenziffer Nummer.
Das Verschieben von AQ nach links bedeutet, dass die Register A und Q als Einheit behandelt werden.
A wird von M subtrahiert und in A gespeichert.
Überprüfen Sie das höchstwertige Bit von A:
Wenn es 0 ist, setzen Sie das niedrigstwertige Bit auf 1.
Andernfalls setzen Sie das niederwertigste Bit auf 0.
Stellen Sie den Wert von A wieder her und dekrementieren Sie den Wert von Zähler N.
Wenn N = 0, unterbrechen Sie die Schleife, andernfalls fahren Sie mit Schritt 2 fort.
Der Quotient wird im Register Q gespeichert.
C++-Code für die obige Methode
#include <iostream> using namespace std; int main(){ // initializing all the variables with Dividend = 9, Divisor = 2. int Q = 8,q=1,M=3; short N = 4; int A = Q; M <<= N; // loop for division by bit operation. for(int i=N-1; i>=0; i--) { A = (A << 1)- M; // checking MSB of A. if(A < 0) { q &= ~(1 << i); // set i-th bit to 0 A = A + M; } else { q |= 1 << i; // set i-th bit to 1 } } cout << "Quotient: "<< q; return 0; }
Quotient: 2
In diesem Tutorial haben wir den Wiederherstellungsdivisionsalgorithmus für vorzeichenlose Ganzzahlen besprochen . Wir haben eine einfache Möglichkeit besprochen, dieses Problem mithilfe von Flussdiagrammen und der Anwendung von Bitoperationen zu lösen. Wir haben auch C++-Programme zur Lösung dieses Problems besprochen, die wir mithilfe von Programmiersprachen wie C, Java, Python usw. implementieren können. Wir hoffen, dass Sie dieses Tutorial hilfreich fanden.
Das obige ist der detaillierte Inhalt vonImplementierung eines vorzeichenlosen Integer-Recovery-Divisionsalgorithmus in C++. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!