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)
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; }
The sum of 54 and 897 using bitwise adding is 951’
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!