Maison >développement back-end >C++ >Implémentation d'un algorithme de division de récupération d'entiers non signés en C++

Implémentation d'un algorithme de division de récupération d'entiers non signés en C++

PHPz
PHPzavant
2023-09-12 16:01:011746parcourir

Discutez de l'utilisation de l'algorithme de division pour diviser des entiers non signés. Certains algorithmes de division sont implémentés sur papier, d'autres sont implémentés sur des circuits numériques. Il existe deux algorithmes de division : l’algorithme de division lente et l’algorithme de division rapide. Les algorithmes de division lente comprennent les algorithmes de récupération, les algorithmes de récupération sans exécution, les algorithmes SRT et les algorithmes de non-récupération.

Dans ce tutoriel, nous discuterons de l'algorithme de récupération en supposant 0 Méthode de solution

Ici, nous utiliserons le registre Q pour stocker le quotient, le registre A pour stocker le reste et M pour stocker le diviseur. La valeur initiale de A reste à 0, et sa valeur est restaurée, c'est pourquoi la méthode reprend la division.

  • initialiser le registre avec valeur,

    • initialiser le registre avec valeur, p>

      • Q = dividende,

      • A = 0,

      • M = diviseur,
      • N = chiffre du dividende nombre.

    • Décaler AQ vers la gauche signifie traiter les registres A et Q comme une unité.

    • A est soustrait de M et stocké dans A.

    • Vérifiez le bit le plus significatif de A :

      • S'il est 0, définissez le bit le moins significatif sur 1.

      • Sinon, définissez le bit le moins significatif à 0.

    • Restaurez la valeur de A et décrémentez la valeur du compteur N.

    • Si N = 0, cassez la boucle sinon, passez à l'étape 2.

    • Le quotient est stocké dans le registre Q.

    Organigramme

    Implémentation dun algorithme de division de récupération dentiers non signés en C++

    Exemple

    Code C++ pour la méthode ci-dessus

    #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;
    }

    Output

    Quotient: 2

    Conclusion

    Dans ce tutoriel, nous avons discuté de l'algorithme de division de récupération pour les entiers non signés . Nous avons discuté d'un moyen simple de résoudre ce problème à l'aide d'organigrammes et d'opérations sur les bits. Nous avons également discuté des programmes C++ pour résoudre ce problème, que nous pouvons implémenter à l'aide de langages de programmation comme C, Java, Python, etc. Nous espérons que vous avez trouvé ce tutoriel utile.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer