কম্পিউটার

C++ এ Bitwise অপারেটর ব্যবহার করে যেকোনো সংখ্যাকে গুণ করুন


এই টিউটোরিয়ালে, আমরা একটি প্রোগ্রাম লিখতে যাচ্ছি যা বিটওয়াইজ অপারেটর ব্যবহার করে প্রদত্ত দুটি সংখ্যাকে গুণ করে।

বাম স্থানান্তর (<<) অপারেটর গুণের জন্য ব্যবহৃত হয় যেখানে ডান স্থানান্তর (>>) বিভাজনের জন্য ব্যবহৃত হয়।

দুটি সংখ্যার গুণন x, y x * y =(x * 2) * (y / 2) হিসাবে লেখা যেতে পারে যদি y হয় তবে এটি x * y =(x * y) * (y / 2) + x এর সমান।

সুতরাং যখনই দ্বিতীয় সংখ্যাটি বিজোড় হবে, ফলাফলের সাথে প্রথম সংখ্যাটি যোগ করুন। আসুন সমস্যা সমাধানের পদক্ষেপগুলি দেখি৷

অ্যালগরিদম

  • দুটি সংখ্যা শুরু করুন।
  • একটি লুপ লিখুন যা দ্বিতীয় সংখ্যাটি 0 না হওয়া পর্যন্ত পুনরাবৃত্তি করে।
    • যদি দ্বিতীয় সংখ্যাটি বিজোড় হয়, তাহলে ফলাফলে প্রথম সংখ্যাটি যোগ করুন।
    • প্রথম সংখ্যাকে 1 বিট করে বাম স্থানান্তর করুন।
    • দ্বিতীয় সংখ্যাকে 1 বিট করে ডানদিকে সরান।

বাস্তবায়ন

C++

-এ উপরের অ্যালগরিদমের বাস্তবায়ন নিচে দেওয়া হল
#include <bits/stdc++.h>
using namespace std;
int multiplyTwoNumbers(int a, int b) {
   int result = 0;
   while (b > 0) {
      if (b & 1) {
         result += a;
         }
      a = a << 1;
      b = b >> 1;
   }
   return result;
}
int main() {
   cout << multiplyTwoNumbers(75, 4) << endl;
   cout << multiplyTwoNumbers(90, 9) << endl;
   cout << multiplyTwoNumbers(83, 66) << endl;
   return 0;
}

আউটপুট

আপনি যদি উপরের কোডটি চালান, তাহলে আপনি নিম্নলিখিত ফলাফল পাবেন।

300
810
5478

  1. C++ এ শর্তসাপেক্ষ বা বিটওয়াইজ অপারেটর ব্যবহার না করে সর্বোচ্চ চারটি সংখ্যা

  2. C++ এ টারনারি অপারেটর ব্যবহার করে সবচেয়ে বড় সংখ্যা খুঁজে বের করার প্রোগ্রাম

  3. C++ ব্যবহার করে n এর সমান সমষ্টি সহ পাওয়ার পদের ন্যূনতম সংখ্যা।

  4. '-' অপারেটর ব্যবহার করে দুটি সংখ্যার সংযোজন?