Heim > Artikel > Backend-Entwicklung > C++-Programm zum Konvertieren von Binärzahlen in Gray-Code mithilfe von Rekursion
Gray-Code oder reflektierter Binärcode ist eine spezielle Art der binären Darstellung von Zahlen, bei der sich zwei aufeinanderfolgende Werte nur in einem Bit unterscheiden. Die binären Äquivalente von 1 und 2 sind beispielsweise 01 und 10, wobei sich zwei Bits ändern. Aber im Gray-Code ist 1 01, 2 11 und nur ein Bit ändert sich. In diesem Artikel erfahren Sie, wie Sie mithilfe der Rekursion in C++ eine bestimmte Binärzahl in ihr Gray-Code-Äquivalent konvertieren.
Im ersten Beispiel geben wir Dezimalzahlen an. Die Zahlen sind nur 0 und 1, aber die Zahlen sind dezimal. Wenn wir beispielsweise 6 als Eingabe übergeben möchten, übergeben wir 110 (einhundertzehn in Dezimalzahl), was 6 in Binärform entspricht. Das Programm gibt die Ausgabe auf ähnliche Weise zurück.
#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
Gray-Code oder reflektierter Binärcode können durch Anwenden einer XOR-Operation auf aufeinanderfolgende Bits gefunden werden. Das Gleiche wird erreicht, indem man die letzten beiden Ziffern der angegebenen Zahl nimmt und, wenn sie nicht identisch sind, die Funktion rekursiv aufruft und die Zahl mit Ausnahme der letzten Ziffer übergibt. Das Ergebnis wird mit 1 verkettet, andernfalls mit 0 usw. Und bald. Im Beispiel haben wir die Eingabe als Ganzzahl-Dezimalzahl bereitgestellt und die Ausgabe erfolgt ebenfalls im Ganzzahl-Dezimalformat. Das gleiche Problem kann gelöst werden, indem eine Zeichenfolgeneingabe verwendet wird, die bei Bedarf zur Bereitstellung größerer Eingaben verwendet werden kann.
Das obige ist der detaillierte Inhalt vonC++-Programm zum Konvertieren von Binärzahlen in Gray-Code mithilfe von Rekursion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!