Maison > développement back-end > C++ > le corps du texte

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

PHPz
Libérer: 2023-09-12 16:01:01
avant
1702 Les gens l'ont consulté

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;
    }
    Copier après la connexion

    Output

    Quotient: 2
    Copier après la connexion

    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!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal