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

Programme C++ pour convertir un nombre binaire en code Gray par récursivité

PHPz
Libérer: 2023-09-16 13:57:03
avant
598 Les gens l'ont consulté

Programme C++ pour convertir un nombre binaire en code Gray par récursivité

Le code gris ou code binaire réfléchi est un type particulier de représentation binaire de nombres dans lequel deux valeurs consécutives diffèrent sur un seul bit. Par exemple, les équivalents binaires de 1 et 2 sont 01 et 10, où deux bits changent. Mais dans le code Gray, 1 vaut 01, 2 vaut 11 et un seul bit change. Dans cet article, nous verrons comment convertir un nombre binaire donné en son équivalent en code Gray en utilisant la récursivité en C++.

Passez les nombres sous forme d'entiers décimaux

Dans le premier exemple, nous fournissons des nombres décimaux. Les nombres ne sont que 0 et 1, mais les nombres sont en décimal. Par exemple, si nous voulons passer 6 en entrée, nous passons 110 (cent dix en décimal), ce qui équivaut à 6 en binaire. Le programme renvoie la sortie de la même manière.

Algorithme

  • Définissez une fonction solve() qui prendra un nombre binaire
  • Si n est 0, alors
    • Retour 0
  • Si ça se termine
  • Last := le dernier chiffre de n
  • second_last = avant-dernier chiffre de n
  • Si le dernier chiffre et l'avant-dernier chiffre sont différents, alors
    • Entrez 1 et appelez solve (n coupe le dernier bit)
  • Sinon
    • Entrez 0 et appelez solve (n coupe le dernier bit)
  • Si ça se termine
  • La fonction solve() se termine

Exemple

#include <iostream>
using namespace std;

int solve( int n ) {
   if( n == 0 )
   return 0;
   int last = n % 10;
   int second_last = (n / 10) % 10;
   if( (last && !second_last) || (!last && second_last) ) {
      return (1 + 10 * solve( n / 10 ));
   }
   return (10 * solve( n / 10 ));
}

int main()
{
   cout << "Gray code for the number 2 (10) is: " << solve( 10 ) << endl;
   cout << "Gray code for the number 6 (110) is: " << solve( 110 ) << endl;
   cout << "Gray code for the number 13 (1101) is: " << solve( 1101 ) << endl;
   cout << "Gray code for the number 93 (1011101) is: " << solve( 1011101 ) << endl;
}
Copier après la connexion

Sortie

Gray code for the number 2 (10) is: 11
Gray code for the number 6 (110) is: 101
Gray code for the number 13 (1101) is: 1011
Gray code for the number 93 (1011101) is: 1110011
Copier après la connexion

Conclusion

Le code gris ou le code binaire réfléchi peut être trouvé en appliquant l'opération XOR sur des bits consécutifs. La même chose est obtenue en prenant les deux derniers chiffres du nombre donné et lorsqu'ils ne sont pas identiques, appelez la fonction de manière récursive et transmettez le numéro sauf le dernier chiffre, le résultat sera concaténé avec 1 sinon avec 0, etc. Et bientôt. Dans l'exemple, nous avons fourni l'entrée sous forme de nombre décimal entier et la sortie est également au format décimal entier. Le même problème peut être résolu en prenant une entrée de type chaîne qui peut être utilisée pour fournir une entrée plus grande si nécessaire.

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!

Étiquettes associées:
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