Heim > Backend-Entwicklung > C++ > C++-Programm zum Konvertieren von Binärzahlen in Gray-Code mithilfe von Rekursion

C++-Programm zum Konvertieren von Binärzahlen in Gray-Code mithilfe von Rekursion

PHPz
Freigeben: 2023-09-16 13:57:03
nach vorne
666 Leute haben es durchsucht

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.

Zahlen als Dezimalzahlen übergeben

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.

Algorithmus

  • Definieren Sie eine Funktion „solve()“, die eine Binärzahl akzeptiert
  • Wenn n 0 ist, dann
    • 0 zurückgeben
  • Wenn es endet
  • Last := die letzte Ziffer von n
  • second_last = vorletzte Ziffer von n
  • Wenn die letzte Ziffer und die vorletzte Ziffer unterschiedlich sind, dann
    • Geben Sie 1 ein und rufen Sie „solve(n cuts last bit)“ auf
  • Sonst
    • Geben Sie 0 ein und rufen Sie „solve“ auf (n schneidet das letzte Bit ab)
  • Wenn es endet
  • solve()-Funktion endet

Beispiel

#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;
}
Nach dem Login kopieren

Ausgabe

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
Nach dem Login kopieren

Fazit

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!

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage