এই সমস্যায়, আমাদের দুটি সংখ্যা দেওয়া হয়েছে। আমাদের কাজ হল দুটি পূর্ণসংখ্যার বিটওয়াইজ পুনরাবৃত্ত যোগ করার জন্য একটি সি প্রোগ্রাম তৈরি করা।
বিটওয়াইজ অপারেশন ব্যবহার করে যোগফল খুঁজে বের করার যুক্তি আমরা প্রি-স্কুলে থাকাকালীন যা করতাম তার অনুরূপ। যোগফল বের করার জন্য, আমরা সংখ্যার প্রতিটি অঙ্ক যোগ করতাম এবং যদি একটি ক্যারি থাকে, তাহলে আমরা পরবর্তী সংখ্যায় যোগ করতাম।
আমরা একই জিনিস করব, XOR অপারেটর ব্যবহার করে যোগফল খুঁজে বের করব এবং AND অপারেশন ব্যবহার করে বহনের জন্য পরীক্ষা করব। যদি একটি ক্যারি থাকে তবে আমরা এটিকে আবার নম্বরে যোগ করব অন্যথায় নয়৷
এটি একটি হাফ-অ্যাডারের যুক্তি যা আপনি ডিজিটাল ইলেকট্রনিক্সে শিখেছেন। এখানে পড়ুন...
এখন, যোগফলটি a^b অর্থাৎ একটি XOR b ব্যবহার করে গণনা করা হয় এবং আমাদের একটি অতিরিক্ত বহনের জন্য পরীক্ষা করতে হবে যা উভয়ের প্রথম বিট সেট করা থাকলে তা প্রচার করা প্রয়োজন। এবং আমাদের নম্বরটিতে একটি অতিরিক্ত সেট বিট যোগ করতে হবে।
সুতরাং, একটি বিট অ্যালগরিদম হবে
ধাপ 1 − a এবং b অর্থাৎ a^b-এর XOR খুঁজুন এবং ফলাফল পরিবর্তনশীলে সংরক্ষণ করুন।
ধাপ 2 − পরীক্ষা করুন যদি {(a &b) <<1} ==0
ধাপ 2.1৷ − যদি এটি 0 এর সমান হয়, তাহলে ফলাফলটি প্রিন্ট করুন, এটি চূড়ান্ত ফলাফল।
ধাপ 2.2৷ − যদি এটি 0 এর সমান না হয়, তাহলে ধাপ 1 এ যান, a ={(a &b) <<1} এবং b =ফলাফল সহ।
উদাহরণ
অ্যালগরিদম -
-এর কাজ চিত্রিত করার জন্য প্রোগ্রাম#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’