আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন add() লিখতে হবে যা m এবং n দুটি সংখ্যা নেয়। ফাংশনটি, চারটি মৌলিক গাণিতিক ক্রিয়াকলাপ ব্যবহার না করে ইনপুট হিসাবে নেওয়া দুটি সংখ্যা যোগ করে যোগফল ফেরত দিতে হবে।
উদাহরণ
এর জন্য কোড হবে −
const m = 67, n = 33; const add = (x, y) => { while(y !== 0){ let carry = x & y; x = x ^ y; y = carry << 1; }; return x; }; console.log(add(m, n));
ব্যাখ্যা
দুটি বিটের মধ্যে XOR (^) সম্পাদন করে দুটি বিটের যোগফল পাওয়া যেতে পারে। এবং ক্যারি বিট দুটি বিটের AND (&) সম্পাদন করে পাওয়া যেতে পারে।
আমরা এখানে হাফ অ্যাডার লজিকের একটি বর্ধিত সংস্করণ ব্যবহার করেছি যা দুটি পূর্ণসংখ্যা যোগ করতে 2 একক বিট যোগ করতে ব্যবহার করা যেতে পারে। যদি x এবং y একই অবস্থান(গুলি) এ বিট সেট না করে থাকে, তাহলে x এবং y এর বিটওয়াইজ XOR (^) x এবং y এর যোগফল দেয়।
সাধারণ সেট বিটগুলিকেও অন্তর্ভুক্ত করতে, বিটওয়াইজ এবং (&) ব্যবহার করা হয়। x এবং y এর বিটওয়াইজ AND সমস্ত ক্যারি বিট দেয়। আমরা গণনা করেছি (x &y) <<1 এবং প্রয়োজনীয় ফলাফল পেতে এটিকে x^y-এ যোগ করেছি।
আউটপুট
এবং কনসোলে আউটপুট হবে −
100