কম্পিউটার

C++ এ পরবর্তী সংখ্যার বাইনারি উপস্থাপনা


এই সমস্যায়, আমাদের একটি সংখ্যার বাইনারি উপস্থাপনা দেওয়া হয়েছে এবং আমাদের পরবর্তী সংখ্যাটির বাইনারি উপস্থাপনা খুঁজে বের করতে হবে অর্থাৎ প্রদত্ত সংখ্যার সাথে একটি যোগ করার পরে যে সংখ্যাটি পাওয়া যায়।

বাইনারী উপস্থাপনা একটি সংখ্যার সংখ্যাটি সংখ্যাটির ভিত্তিকে ভিত্তি 2 এ পরিবর্তন করছে এবং শুধুমাত্র 0 বা 1 ব্যবহার করে সংখ্যাটিকে উপস্থাপন করছে।

উদাহরণস্বরূপ, 14-এর বাইনারি উপস্থাপনা হল 1110।

সুতরাং, এখানে আমাদের একটি সংখ্যা দেওয়া হবে, ধরা যাক বাইনারি আকারে n। এবং আমাদের n+1 এর বাইনারি উপস্থাপনা খুঁজে বের করতে হবে।

এই সমস্যা সমাধানের জন্য, আমাদের বাইনারি সংযোজনের মূল বিষয়গুলি জানতে হবে। দেখা যাক বাইনারি আকারে 0 বা 1 এর সাথে 1 যোগ করলে কি হয়।

0 + 1 =1

1 + 1 =10

উদাহরণ

আসুন উপরের সমস্যাটি কীভাবে সমাধান করবেন তার একটি উদাহরণ দেখি,

Input: 010010111
Output: 010011000
Explanation : (010010111)2 is the binary representation of 152 and the next number will be 153 
whose binary representation is (010011000)2. We will use binary addition here and add binary (1)2 
to the binary representation of the number.

উপরের উদাহরণ থেকে আমরা দেখতে পাচ্ছি যে সংখ্যাটিতে বাইনারি 1 যোগ করার সময় ডান থেকে শুরু হওয়া সমস্তগুলি 0 তে রূপান্তরিত হয়, যতক্ষণ না প্রথম 0টি আসে এবং এই 0টি 1 এ উল্টানো হয়৷ এখন আসুন এই যুক্তিটির জন্য একটি অ্যালগরিদম তৈরি করি৷

অ্যালগরিদম

Step 1 : Start right to left i.e n-1 to 0
Step 2 : If 0 is encountered, change it 1 and break
Step 3 : If one is encounter change it to 0.
Step 4 : When no zero is encountered, add 1 to the start of the array.
Step 5 : Print the array.

উদাহরণ

এখন, এই অ্যালগরিদমের কোড বাস্তবায়ন দেখা যাক।

#include <bits/stdc++.h>
using namespace std;
string nextBinary(string num) {
   int l = num.size();
   int flag = 0 ;
   for (int i=l-1; i>=0; i--) {
      if (num.at(i) == '0') {
         num.at(i) = '1';
         flag = 1;
         break;
      } else
         num.at(i) = '0';
   }
   if (flag < 0)
      num = "1" + num;
   return num;
}
int main() {
   string number = "0111010111";
   cout<<"The Binary representation of the number is "<<number<<endl;
   cout<<"Binary representation of next number is "<<nextBinary(number);
   return 0;
}

আউটপুট

The Binary representation of the number is 0111010111
Binary representation of next number is 0111011000

  1. C++ এ মিতব্যয়ী নম্বর

  2. অন্যদের ক্ষমতায় একটি সংখ্যার C++ প্রতিনিধিত্ব

  3. C++ পেন্টাটোপ নম্বর

  4. C++ এ বাইনারি সার্চ ট্রি ইটারেটার