দুটি সংখ্যা দেওয়া আছে। বিটওয়াইজ অপারেশন এবং রিকারশন ব্যবহার করে তাদের যোগফল বের করতে হবে (হাফ-অ্যাডার লজিক)।
লজিক
- XOR (^) দিয়ে যোগফল বের করা হয় (ক্যারি ছাড়া)।
- AND (&) এবং লेफট শিফট (<<1) দিয়ে ক্যারি বের করা হয়।
- যদি ক্যারি ০ হয়, তবে যোগফল ফাইনাল। নইলে রিকারসিভ কল: addNumbers(carry, result)।
অ্যালগরিদম
- carry = (a & b) << 1
- result = a ^ b
- if carry == 0 return result
- else return addNumbers(carry, result)
C প্রোগ্রাম উদাহরণ
#include <stdio.h>
int addNumbers(int a, int b) {
int carry = (a & b) << 1;
int result = a ^ b;
if (carry == 0) return result;
else return addNumbers(carry, result);
}
int main() {
int a = 54, b = 897;
printf("যোগফল: %d", addNumbers(a, b));
return 0;
}
আউটপুট
যোগফল: 951