


Vérifiez si deux nombres donnés peuvent être rendus égaux en changeant 1 ou 2 bits en C++
Dans le domaine de la programmation informatique, de nombreuses opérations tournent autour de valeurs numériques. Dans certains cas, nous devrons peut-être déterminer si deux nombres peuvent être rendus égaux en modifiant quelques bits. Même si ce problème peut présenter des défis, la bonne stratégie mènera à une solution efficace.
Grammaire
Pour construire une base solide pour une compréhension approfondie de l'algorithme, familiarisons-nous d'abord avec la syntaxe utilisée dans le codage ultérieur en utilisant cette approche spécifique.
bool checkEquality(int num1, int num2);
Générez une réponse booléenne en utilisant la fonction checkEquality pour déterminer si les deux entiers donnés num1 et num2 peuvent être rendus égaux en changeant seulement un ou deux bits.
Algorithme
Voici une présentation étape par étape de notre algorithme :
Déterminez le résultat XOR de num1 et num2 et attribuez la sortie à une nouvelle variable xorResult.
Utilisez un algorithme pour compter le nombre de bits définis dans xorResult et attribuez le résultat à une variable appelée setBitCount.
Pour que l'opération réussisse, setBitCount ne peut pas dépasser 2. Dans ce cas, notre fonction renverra un vrai résultat. Si ce seuil spécifié est dépassé, nous pouvons conclure que notre sortie doit être fausse.
Maintenant que nous avons l’algorithme, examinons au moins deux manières différentes de résoudre ce problème.
Méthode 1 : Opération sur bits
Dans cette méthode, nous utiliserons des opérations sur les bits pour vérifier si les nombres peuvent être rendus égaux.
Exemple
#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; }
Sortie
Enter the first number: Enter the second number: It is not possible to make the numbers equal by changing only one or two bits.
Explication
En modifiant la valeur d'un ou deux des bits, le code C++ effectue une vérification simple pour déterminer si un alignement parfait entre les deux valeurs fournies peut être établi lors du traitement. Pour atteindre cet objectif, une partie importante du code consiste à définir une fonction spéciale appelée « checkEquality ». L'utilisation de cette fonction personnalisée nécessite de fournir deux variables entières en entrée. Le type de sortie de cette fonction particulière utilise la logique booléenne afin que l'utilisateur puisse facilement obtenir un résultat indiquant si les arguments fournis à la fonction lors de l'exécution sont suffisants pour un alignement numérique parfait.
À des fins de calcul, ce programme utilise l'algorithme XOR pour comparer les entrées entières ci-dessus via la méthode checkEquality. Ensuite, le résultat automatiquement stocké est capturé dans la variable "xorResult". L'élément clé de l'étape suivante est de calculer le résultat intermédiaire ET au niveau du bit entre xorResult et XORResult - 1. A ce stade, lorsque la valeur de retour est "0", l'hypothèse de la variable bitCheck devient nécessaire. Parce que cela indique qu'une condition nécessaire est remplie, nous pouvons supposer qu'un ou deux bits de l'entrée entière doivent changer pour satisfaire la demande faite par la fonction checkEquality. Une fois terminé, le programme demande à l'utilisateur une saisie, avant de transmettre les paramètres dans la méthode checkEquality comme étape de calcul finale. Une fois le processus terminé, un message de sortie indique la présence/absence des changements de niveau de bit requis et un message correspondant est affiché dans la sortie de la console. Cette implémentation montre un excellent exemple de manipulation au niveau du bit et d'utilisation de XOR, à partir de C++.
Méthode 2 : Méthode de distance de Hamming
Dans cette méthode, nous utiliserons la notion de distance de Hamming pour résoudre le problème.
Exemple
#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; }
Sortie
Enter the first number: Enter the second number: It is not possible to make the numbers equal by changing only one or two bits.
Explication
Dans cet exemple, nous fournissons un programme C++ conçu pour déterminer si nous pouvons apporter des modifications à un ou éventuellement deux bits pour rendre deux nombres différents équivalents. De plus, il existe une fonction appelée « countSetBits » qui utilise l'algorithme de Kemighan pour déterminer combien de bits définis sont présents dans une valeur entière.
Dans la fonction checkEquality, le code calcule le OU exclusif des deux nombres saisis et stocke le résultat dans xorResult. L'instruction précédente déclenche la fonction countSetBits pour déterminer le nombre de bits définis dans xorResult, qui est ensuite accumulé dans setBitCount. Chaque fois que setBitCount est déterminé comme étant égal à deux ou moins, cela signifie que seuls un ou deux bits doivent être modifiés pour atteindre l'équilibre, ce qui fait que la fonction renvoie vrai. Sinon, retournez false.
Dans la fonction principale, le programme invite l'utilisateur à saisir deux nombres. Il appelle ensuite la fonction checkEquality en utilisant le numéro fourni par l'utilisateur et stocke le résultat. Enfin, en fonction de la valeur du résultat, le programme imprime un message approprié indiquant s'il est possible de rendre les nombres égaux en changeant un ou deux bits.
Ce code fournit une implémentation claire du problème, en utilisant les opérations XOR et l'algorithme de Kernighan pour calculer efficacement les bits définis.
Conclusion
Notre article aborde le problème de déterminer si deux nombres donnés peuvent être égaux en ne changeant qu'un ou deux bits. Pour résoudre ce problème, nous proposons deux méthodes efficaces : la méthode des opérations sur bits et la méthode de la distance de Hamming. Les deux méthodes offrent des solutions efficaces. Nous fournissons également de vrais exemples de code exécutable basés sur ces méthodes. En comprenant et en mettant en œuvre ces méthodes, vous pouvez vérifier efficacement si deux nombres peuvent être rendus égaux en modifiant quelques bits.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Nous connaissons tous des nombres qui ne sont le carré d’aucun nombre, comme 2, 3, 5, 7, 8, etc. Il existe N nombres non carrés et il est impossible de connaître tous les nombres. Ainsi, dans cet article, nous expliquerons tout sur les nombres sans carrés ou non carrés et les moyens de trouver le Nième nombre non carré en C++. Nième nombre non carré Si un nombre est le carré d'un entier, alors ce nombre est appelé un carré parfait. Quelques exemples de nombres carrés parfaits sont -1iscarréde14iscarréde29iscarréde316iscarréde425iscarréde5 Si un nombre n'est le carré d'aucun entier, alors le nombre est appelé non carré. Par exemple, les 15 premiers nombres non carrés sont -2,3,5,6,

Au bon vieux temps, lorsque la mémoire informatique était coûteuse et la puissance de traitement limitée, l'utilisation d'opérations binaires de type hacker pour traiter les informations était la méthode privilégiée (et dans certains cas, la seule). À ce jour, l’utilisation directe d’opérations sur bits fait toujours partie intégrante de nombreux domaines informatiques, tels que la programmation système de bas niveau, le traitement graphique, la cryptographie, etc.

Dans cet article, nous découvrirons l'algorithme d'inversion pour faire pivoter le tableau donné vers la droite de k éléments, par exemple −Input:arr[]={4,6,2,6,43,7,3,7}, k= 4Sortie :{43,7,3,7,4,6,2,6}Explication : La rotation de chaque élément du tableau par 4 éléments vers la droite donne{43,7,3,7,4,6,2,6}.Entrée :arr[]= {8 ,5,8,2,1,4,9,3},k=3Sortie :{4,9,3,8,5,8,2,1} Trouver la solution

Un cercle est une figure fermée. Tous les points d'un cercle sont équidistants d'un point à l'intérieur du cercle. Le point central est appelé le centre du cercle. La distance d’un point au centre d’un cercle s’appelle le rayon. L'aire est une représentation quantitative de l'étendue des dimensions d'une figure fermée. L'aire d'un cercle est l'aire délimitée par les dimensions du cercle. La formule pour calculer l'aire d'un cercle, Aire=π*r*r Pour calculer l'aire, nous donnons le rayon du cercle en entrée, nous utiliserons la formule pour calculer l'aire, algorithme ÉTAPE 1 : Prendre le rayon comme entrée de l'utilisateur utilisant st dinput.ÉTAPE 2 : Calculez l'aire du cercle en utilisant, aire = (

Dans cet article, nous décrirons toutes les manières possibles de trouver des quaternions, en utilisant A.P. pour les 3 premiers termes et G.P. pour les 3 derniers termes. Tout d’abord, nous expliquerons les définitions de base de la progression arithmétique (A.P.) et de la progression géométrique (G.P.). Progression arithmétique (A.P.) - Il s'agit d'une séquence de nombres dans laquelle la différence commune (d) est la même ou constante, ce qui signifie que la différence de deux nombres consécutifs est constante. Par exemple : 1,3,5,7,9|d=2 Progression géométrique (G.P.) - Il s'agit d'une séquence de nombres où la raison (r) est la même, ce qui signifie que nous pouvons multiplier le nombre précédent par un nombre fixe. nombre. Par exemple : 3, 6, 12, 24, ....|r=2 Dans ce problème, nous devons déterminer combien il y en a dans le tableau arr[] de N entiers

Nous avons besoin de connaissances appropriées pour créer plusieurs paires uniques dans la syntaxe des tableaux de C++. Tout en trouvant le nombre de paires uniques, nous comptons toutes les paires uniques dans le tableau donné, c'est-à-dire que toutes les paires possibles peuvent être formées où chaque paire doit être unique. Par exemple -Input:array[]={5,5,9}Output:4Explication:Thenumberoffalluniquepairsare(5,5),(5,9),(9,5)and(9,9).Input:array[] = {5,4,3,2,2}Sortie : 16 façons de trouver une solution Il existe deux façons de résoudre ce problème, ce sont -

BitSet est une classe en Java utilisée pour les opérations sur les bits. BitSet peut être considéré comme un tableau composé de bits binaires, et chaque bit binaire ne peut être que 0 ou 1. BitSet fournit une série de méthodes pour effectuer des opérations sur les bits, notamment la configuration, l'effacement, le retournement, l'obtention, etc. Il est très simple d'utiliser BitSet pour effectuer des opérations sur les bits en Java. Présentons les étapes de fonctionnement spécifiques. 1. Créez un objet BitSet. Un objet BitSet peut être créé de deux manières : 1. Créez un objet BitSet en utilisant les valeurs par défaut.

Dans cet article, nous utiliserons C++ pour résoudre le problème de trouver le nombre de sous-tableaux dont les valeurs maximales et minimales sont les mêmes. Voici un exemple du problème −Input:array={2,3,6,6,2,4,4,4}Output:12Explication :{2},{3},{6},{6}, {2 },{4},{4},{4},{6,6},{4,4},{4,4}et{4,4,4}sont les sous-tableaux qui peuvent être formés avec les mêmes éléments maximum et minimum. Entrée : tableau = {3, 3, 1,5,
