Inhaltsverzeichnis
Grammatik
Algorithmus
Methode 1: Bit-Operation
Beispiel
Ausgabe
Erklärung
Methode 2: Hamming-Distanz-Methode
Fazit
Heim Backend-Entwicklung C++ Überprüfen Sie, ob zwei gegebene Zahlen durch Ändern von 1 oder 2 Bits in C++ gleich gemacht werden können

Überprüfen Sie, ob zwei gegebene Zahlen durch Ändern von 1 oder 2 Bits in C++ gleich gemacht werden können

Aug 25, 2023 pm 05:57 PM
位操作 c编程 数字比较

Überprüfen Sie, ob zwei gegebene Zahlen durch Ändern von 1 oder 2 Bits in C++ gleich gemacht werden können

Im Bereich der Computerprogrammierung drehen sich viele Operationen um numerische Werte. In einigen Fällen müssen wir möglicherweise feststellen, ob zwei Zahlen durch Ändern einiger Bits gleich gemacht werden können. Auch wenn dieses Problem Herausforderungen mit sich bringen kann, führt die richtige Strategie zu einer erfolgreichen Lösung.

Grammatik

Um eine solide Grundlage für ein tiefes Verständnis des Algorithmus zu schaffen, machen wir uns zunächst mithilfe dieses spezifischen Ansatzes mit der Syntax vertraut, die bei der späteren Codierung verwendet wird.

bool checkEquality(int num1, int num2);
Nach dem Login kopieren

Generieren Sie eine boolesche Antwort, indem Sie die checkEquality-Funktion verwenden, um zu bestimmen, ob die beiden gegebenen Ganzzahlen num1 und num2 gleich gemacht werden können, indem nur ein oder zwei Bits geändert werden.

Algorithmus

Hier ist eine schrittweise Aufschlüsselung unseres Algorithmus:

  • Bestimmen Sie das XOR-Ergebnis von num1 und num2 und weisen Sie die Ausgabe einer neuen Variablen xorResult zu.

  • Verwenden Sie einen Algorithmus, um die Anzahl der gesetzten Bits in xorResult zu zählen und das Ergebnis einer Variablen namens setBitCount zuzuweisen.

  • Damit der Vorgang erfolgreich ist, darf setBitCount den Wert 2 nicht überschreiten. In diesem Fall gibt unsere Funktion ein wahres Ergebnis zurück. Wenn dieser angegebene Schwellenwert überschritten wird, können wir daraus schließen, dass unsere Ausgabe falsch sein muss.

  • Da wir nun den Algorithmus haben, wollen wir uns mit mindestens zwei verschiedenen Möglichkeiten befassen, dieses Problem zu lösen.

Methode 1: Bit-Operation

Bei dieser Methode verwenden wir Bitoperationen, um zu prüfen, ob die Zahlen gleich gemacht werden können.

Beispiel

#include <iostream>

bool checkEquality(int num1, int num2) {
   int xorResult = num1 ^ num2;
   int bitCheck = xorResult & (xorResult - 1);
   return (bitCheck == 0);
}

int main() {
   int number1, number2;
   std::cout << "Enter the first number: ";
   std::cin >> number1;
   std::cout << "Enter the second number: ";
   std::cin >> number2;
    
   bool result = checkEquality(number1, number2);
   if (result) {
      std::cout << "It is possible to make the numbers equal by changing only one or two bits." << std::endl;
   } else {
      std::cout << "It is not possible to make the numbers equal by changing only one or two bits." << std::endl;
   }  
   return 0;
}
Nach dem Login kopieren

Ausgabe

Enter the first number: Enter the second number: It is not possible to make the numbers equal by changing only one or two bits.
Nach dem Login kopieren
Nach dem Login kopieren

Erklärung

Durch Ändern des Werts eines oder zweier Bits führt der C++-Code eine einfache Prüfung durch, um festzustellen, ob während der Verarbeitung eine perfekte Ausrichtung zwischen den beiden bereitgestellten Werten hergestellt werden kann. Um dieses Ziel zu erreichen, besteht ein wichtiger Teil des Codes darin, eine spezielle Funktion namens „checkEquality“ zu definieren. Die Verwendung dieser benutzerdefinierten Funktion erfordert die Bereitstellung von zwei ganzzahligen Variablen als Eingabe. Der Ausgabetyp dieser speziellen Funktion verwendet boolesche Logik, sodass der Benutzer leicht ein Ergebnis erhalten kann, das angibt, ob die der Funktion zur Laufzeit bereitgestellten Argumente für eine perfekte numerische Ausrichtung ausreichen.

Zu Rechenzwecken verwendet dieses Programm den XOR-Algorithmus, um die oben genannten ganzzahligen Eingaben über die checkEquality-Methode zu vergleichen. Anschließend wird das automatisch gespeicherte Ergebnis in der Variablen „xorResult“ erfasst. Das Schlüsselelement im nächsten Schritt besteht darin, das bitweise UND-Zwischenergebnis zwischen xorResult und XORResult - 1 zu berechnen. Wenn in diesem Stadium der Rückgabewert „0“ ist, muss die Variable bitCheck übernommen werden. Da es anzeigt, dass eine notwendige Bedingung erfüllt ist, können wir davon ausgehen, dass ein oder zwei Bits in der Ganzzahleingabe geändert werden müssen, um die von der checkEquality-Funktion gestellte Anforderung zu erfüllen. Nach Abschluss fordert das Programm den Benutzer zur Eingabe auf, bevor die Parameter als letzte Berechnungsstufe an die checkEquality-Methode übergeben werden. Nach Abschluss des Prozesses zeigt eine Ausgabemeldung das Vorhandensein/Fehlen der erforderlichen Änderungen auf Bitebene an und eine entsprechende Meldung wird in der Konsolenausgabe angezeigt. Diese Implementierung zeigt ein hervorragendes Beispiel für bitweise Manipulation und XOR-Nutzung aus C++.

Methode 2: Hamming-Distanz-Methode

Bei dieser Methode verwenden wir das Konzept der Hamming-Distanz, um das Problem zu lösen.

Beispiel

#include <iostream>

int countSetBits(int num) {
   int count = 0;
   while (num) {
      num &= (num - 1);
      count++;
   }
   return count;
}

bool checkEquality(int num1, int num2) {
   int xorResult = num1 ^ num2;
   int setBitCount = countSetBits(xorResult);
   return (setBitCount <= 2);
}

int main() {
   int number1, number2;
   std::cout << "Enter the first number: ";
   std::cin >> number1;
   std::cout << "Enter the second number: ";
   std::cin >> number2;
    
   bool result = checkEquality(number1, number2);
   if (result) {
      std::cout << "It is possible to make the numbers equal by changing only one or two bits." << std::endl;
   } else {
      std::cout << "It is not possible to make the numbers equal by changing only one or two bits." << std::endl;
   }   
   return 0;
}
Nach dem Login kopieren

Ausgabe

Enter the first number: Enter the second number: It is not possible to make the numbers equal by changing only one or two bits.
Nach dem Login kopieren
Nach dem Login kopieren

Erklärung

In diesem Beispiel stellen wir ein C++-Programm bereit, mit dem ermittelt werden soll, ob wir Änderungen an einem oder möglicherweise zwei Bits vornehmen können, um zwei verschiedene Zahlen äquivalent zu machen. Darüber hinaus gibt es eine Funktion namens „countSetBits“, die den Kemighan-Algorithmus nutzt, um zu bestimmen, wie viele gesetzte Bits in einem ganzzahligen Wert vorhanden sind.

In der checkEquality-Funktion berechnet der Code das Exklusiv-ODER der beiden Eingabezahlen und speichert das Ergebnis in xorResult. Die vorherige Anweisung löst die Funktion countSetBits aus, um die Anzahl der in xorResult gesetzten Bits zu bestimmen, die dann in setBitCount akkumuliert werden. Wenn festgestellt wird, dass setBitCount zwei oder weniger beträgt, bedeutet dies, dass nur ein oder zwei Bits geändert werden müssen, um ein Gleichgewicht zu erreichen, wodurch die Funktion „true“ zurückgibt. Andernfalls wird false zurückgegeben.

In der Hauptfunktion fordert das Programm den Benutzer zur Eingabe von zwei Zahlen auf. Anschließend ruft es die checkEquality-Funktion mit der vom Benutzer angegebenen Nummer auf und speichert das Ergebnis. Abschließend gibt das Programm abhängig vom Wert des Ergebnisses eine entsprechende Meldung aus, die angibt, ob es möglich ist, die Zahlen durch Änderung eines oder zweier Bits gleich zu machen.

Dieser Code bietet eine klare Implementierung des Problems, indem er XOR-Operationen und den Kernighan-Algorithmus verwendet, um die gesetzten Bits effizient zu berechnen.

Fazit

Unser Artikel befasst sich mit dem Problem, festzustellen, ob zwei gegebene Zahlen gleich sein können, während sich nur ein oder zwei Bits ändern. Um dieses Problem zu lösen, schlagen wir zwei effektive Methoden vor: die Bitoperationsmethode und die Hamming-Distanzmethode. Beide Methoden bieten effiziente Lösungen. Wir stellen auch echte ausführbare Codebeispiele bereit, die auf diesen Methoden basieren. Durch das Verständnis und die Implementierung dieser Methoden können Sie effektiv prüfen, ob zwei Zahlen durch Ändern einiger Bits gleich gemacht werden können.

Das obige ist der detaillierte Inhalt vonÜberprüfen Sie, ob zwei gegebene Zahlen durch Ändern von 1 oder 2 Bits in C++ gleich gemacht werden können. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Verwenden Sie C++, um Code zu schreiben, um die N-te nichtquadratische Zahl zu finden Verwenden Sie C++, um Code zu schreiben, um die N-te nichtquadratische Zahl zu finden Aug 30, 2023 pm 10:41 PM

Wir alle kennen Zahlen, die nicht das Quadrat einer Zahl sind, wie zum Beispiel 2, 3, 5, 7, 8 usw. Es gibt N nichtquadratische Zahlen und es ist unmöglich, jede Zahl zu kennen. In diesem Artikel erklären wir alles über quadratlose oder nichtquadratische Zahlen und Möglichkeiten, die N-te nichtquadratische Zahl in C++ zu finden. N-te nichtquadratische Zahl Wenn eine Zahl das Quadrat einer ganzen Zahl ist, wird die Zahl als perfektes Quadrat bezeichnet. Einige Beispiele für perfekte Quadratzahlen sind -1isquadratvon14isquadratvon29isquadratvon316isquadratvon425isquadratvon5. Wenn eine Zahl nicht das Quadrat einer ganzen Zahl ist, wird die Zahl als nichtquadratisch bezeichnet. Die ersten 15 nichtquadratischen Zahlen sind beispielsweise -2,3,5,6,

Eine kurze Analyse der Bitoperationen (bitweise Operatoren) in Golang Eine kurze Analyse der Bitoperationen (bitweise Operatoren) in Golang Feb 24, 2023 pm 07:42 PM

In den guten alten Zeiten, als Computerspeicher teuer und die Rechenleistung begrenzt war, war die Verwendung von Bitoperationen im Hacker-Stil zur Verarbeitung von Informationen die bevorzugte (und in manchen Fällen sogar die einzige) Methode. Bis heute ist die direkte Verwendung von Bitoperationen ein integraler Bestandteil vieler Computerbereiche, wie z. B. der Low-Level-Systemprogrammierung, der Grafikverarbeitung, der Kryptographie usw.

Inversionsalgorithmus für die Rechtsdrehung eines Arrays, geschrieben in C++ Inversionsalgorithmus für die Rechtsdrehung eines Arrays, geschrieben in C++ Sep 08, 2023 pm 08:17 PM

In diesem Artikel lernen wir den Umkehralgorithmus kennen, um das gegebene Array um k Elemente nach rechts zu drehen, zum Beispiel −Input:arr[]={4,6,2,6,43,7,3,7}, k= 4Ausgabe:{43,7,3,7,4,6,2,6}Erklärung:Das Drehen jedes Elements des Arrays um 4 Elemente nach rechts ergibt {43,7,3,7,4,6,2,6}.Eingabe:arr[]= {8 ,5,8,2,1,4,9,3},k=3Ausgabe:{4,9,3,8,5,8,2,1} Finden Sie die Lösung

Ermitteln Sie in der C-Programmierung die Fläche eines Kreises Ermitteln Sie in der C-Programmierung die Fläche eines Kreises Aug 25, 2023 pm 10:57 PM

Ein Kreis ist eine geschlossene Figur. Alle Punkte auf einem Kreis haben den gleichen Abstand von einem Punkt innerhalb des Kreises. Der Mittelpunkt wird Kreismittelpunkt genannt. Der Abstand von einem Punkt zum Mittelpunkt eines Kreises wird Radius genannt. Die Fläche ist eine quantitative Darstellung der Dimensionsspanne einer geschlossenen Figur. Die Fläche eines Kreises ist die Fläche, die innerhalb der Abmessungen des Kreises eingeschlossen ist. Die Formel zur Berechnung der Fläche eines Kreises lautet Fläche=π*r*r. Um die Fläche zu berechnen, geben wir den Radius des Kreises als Eingabe ein. Wir verwenden die Formel zur Berechnung der Fläche, Algorithmus SCHRITT 1: Übernehmen Sie den Radius als Eingabe vom Benutzer mit stdin. SCHRITT 2 : Berechnen Sie die Fläche des Kreises mit Fläche=(

Ermitteln Sie in C++ die Anzahl der Quadrupel, deren erste drei Terme arithmetische Folgen und deren letzte drei Terme geometrische Folgen sind. Ermitteln Sie in C++ die Anzahl der Quadrupel, deren erste drei Terme arithmetische Folgen und deren letzte drei Terme geometrische Folgen sind. Aug 30, 2023 pm 02:09 PM

In diesem Artikel beschreiben wir alle Möglichkeiten, Quaternionen zu finden, indem wir A.P. für die ersten drei Terme und G.P. für die letzten drei Terme verwenden. Zunächst erklären wir die grundlegenden Definitionen der arithmetischen Progression (A.P.) und der geometrischen Progression (G.P.). Arithmetische Progression (A.P.) – Es handelt sich um eine Zahlenfolge, bei der die gemeinsame Differenz (d) gleich oder konstant ist, was bedeutet, dass die Differenz zweier aufeinanderfolgender Zahlen konstant ist. Zum Beispiel: 1,3,5,7,9|d=2 Geometrische Progression (G.P.) – Dies ist eine Zahlenfolge, bei der das gemeinsame Verhältnis (r) gleich ist, was bedeutet, dass wir die vorherige Zahl mit einer festen Zahl multiplizieren können Nummer. Zum Beispiel: 3, 6, 12, 24, ....|r=2 In diesem Problem müssen wir bestimmen, wie viele N ganze Zahlen im Array arr[] enthalten sind

Ermitteln Sie mit C++ die Anzahl eindeutiger Paare in einem Array Ermitteln Sie mit C++ die Anzahl eindeutiger Paare in einem Array Sep 07, 2023 am 11:53 AM

Wir benötigen entsprechende Kenntnisse, um mehrere eindeutige Paare in der Array-Syntax von C++ zu erstellen. Während wir die Anzahl der eindeutigen Paare ermitteln, zählen wir alle eindeutigen Paare im angegebenen Array, d. h. alle möglichen Paare können gebildet werden, wobei jedes Paar eindeutig sein sollte. Zum Beispiel -Input:array[]={5,5,9}Output:4Erläuterung:Die Anzahl dereinzigartigen Paaresind(5,5),(5,9),(9,5)und(9,9).Input:array[] = {5,4,3,2,2}Ausgabe: 16 Möglichkeiten, eine Lösung zu finden Es gibt zwei Möglichkeiten, dieses Problem zu lösen: −

So führen Sie Bitoperationen mit der BitSet-Funktion in Java durch So führen Sie Bitoperationen mit der BitSet-Funktion in Java durch Jun 26, 2023 pm 06:11 PM

BitSet ist eine Klasse in Java, die für Bitoperationen verwendet wird. BitSet kann man sich als ein aus Binärbits bestehendes Array vorstellen, und jedes Binärbit kann nur 0 oder 1 sein. BitSet bietet eine Reihe von Methoden zum Ausführen von Bitoperationen, einschließlich Setzen, Löschen, Umdrehen, Abrufen usw. Es ist sehr einfach, BitSet zum Ausführen von Bitoperationen in Java zu verwenden. Nachfolgend stellen wir die spezifischen Operationsschritte vor. 1. Erstellen Sie ein BitSet-Objekt. Ein BitSet-Objekt kann auf zwei Arten erstellt werden: 1. Erstellen Sie ein BitSet-Objekt mit Standardwerten.

Schreiben Sie mit C++ einen Code, um die Anzahl der Subarrays mit denselben Mindest- und Höchstwerten zu ermitteln Schreiben Sie mit C++ einen Code, um die Anzahl der Subarrays mit denselben Mindest- und Höchstwerten zu ermitteln Aug 25, 2023 pm 11:33 PM

In diesem Artikel werden wir C++ verwenden, um das Problem zu lösen, die Anzahl der Subarrays zu ermitteln, deren Maximal- und Minimalwert gleich sind. Das Folgende ist ein Beispiel für das Problem: −Input:array={2,3,6,6,2,4,4,4}Output:12Explanation:{2},{3},{6},{6}, {2 },{4},{4},{4},{6,6},{4,4},{4,4}und {4,4,4}sind die Teilarrays, die mit dem gleichen maximalen und minimalen Element gebildet werden können. Eingabe: array={3, 3, 1,5,

See all articles