Maison > développement back-end > C++ > Ajout récursif au niveau du bit de deux entiers en C

Ajout récursif au niveau du bit de deux entiers en C

WBOY
Libérer: 2023-09-05 21:17:03
avant
1266 Les gens l'ont consulté

Ajout récursif au niveau du bit de deux entiers en C

Dans cette question, on nous donne deux nombres. Notre tâche est de créer un programme C pour l'addition récursive au niveau du bit de deux entiers.

La logique de sommation à l'aide d'opérations au niveau du bit est similaire à ce que nous faisions à l'école maternelle. En résumé, nous ajoutons généralement chaque chiffre du numéro, et si un report est présent, nous l'ajoutons au numéro suivant.

Nous ferons quelque chose de similaire, en utilisant l'opérateur XOR pour additionner et l'opérateur AND pour vérifier le report. S'il y a un report, on le rajoute au numéro, sinon pas.

C'est la logique du demi-additionneur que vous avez probablement apprise en électronique numérique. Voir ici...

Maintenant, la somme est calculée en utilisant a^b, c'est-à-dire XOR b, si le premier bit des deux est défini, nous devons vérifier si un report supplémentaire doit être propagé. Nous devons ajouter un bit de réglage supplémentaire au numéro.

Donc, l'arithmétique au niveau du bit sera

Étape 1 - Trouvez le XOR de a et b, c'est-à-dire a^b et stockez-le dans la variable de résultat.

Étape 2 - Vérifiez si {(a & b)

Étape 2.1 - S'il est égal à 0, imprimez le résultat, qui est le résultat final.

Étape 2.2 - Si non égal à 0 est égal à 0, alors passez à l'étape 1 où a = {(a & b)

Exemple

Algorithme procédural illustrant le fonctionnement de cette fonction -

Démonstration en direct

#include <stdio.h>
int addNumbers(int a, int b) {
   int carry = (a & b) << 1;
   int result = a^b;
   if (carry == 0)
      return result;
   else
      addNumbers(carry, result);
}
int main(){
   int a = 54, b = 897;
   printf("The sum of %d and %d using bitwise adding is %d", a, b, addNumbers(a, b));
   return 0;
}
Copier après la connexion

Sortie

The sum of 54 and 897 using bitwise adding is 951&rsquo;
Copier après la connexion

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!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal