Maison > Article > développement back-end > 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++.
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.
#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; }
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
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!