Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी++ में अगले नंबर का बाइनरी प्रतिनिधित्व

इस समस्या में, हमें एक संख्या का द्विआधारी प्रतिनिधित्व दिया जाता है और हमें अगली संख्या का द्विआधारी प्रतिनिधित्व यानी वह संख्या ढूंढनी होती है जो दी गई संख्या में एक जोड़ने के बाद प्राप्त होती है।

द्विआधारी प्रतिनिधित्व संख्या का आधार संख्या के आधार को आधार 2 में बदल रहा है और केवल 0 या 1 का उपयोग करके संख्या का प्रतिनिधित्व कर रहा है।

उदाहरण के लिए, 14 का बाइनरी प्रतिनिधित्व 1110 है।

तो, यहाँ हमें एक संख्या दी जाएगी, मान लीजिए n बाइनरी रूप में है। और हमें n+1 का बाइनरी प्रतिनिधित्व खोजना होगा।

इस समस्या को हल करने के लिए, हमें बाइनरी एडिशन की मूल बातें जानने की जरूरत है। देखते हैं क्या होता है जब 1 को 0 या 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. सी ++ अन्य की शक्तियों में एक संख्या का प्रतिनिधित्व

    किसी संख्या को दूसरी संख्या के घात में निरूपित करने की समस्या की विवेचना कीजिए। हमें दो नंबर दिए गए हैं, x और y। हमें यह बताने की जरूरत है कि क्या y को x की घात में दर्शाया जा सकता है, जहां x की प्रत्येक घात का एक बार उपयोग किया जा सकता है, उदाहरण के लिए Input: x = 4, y = 11 Output: true Explanation

  1. सी++ पेंटाटोप नंबर

    पास्कल के त्रिभुज में एक पंचकोण संख्या को पाँचवीं संख्या के रूप में वर्णित किया गया है। अब, जैसा कि आप जानते हैं, यह पांचवीं संख्या है, तो इसका मतलब है कि हमारे पास पास्कल के त्रिकोण में कम से कम पांच संख्याएं होनी चाहिए, इसलिए इस श्रृंखला की पहली संख्या 1 4 6 4 1 से शुरू होती है। पास्कल त्रिभुज की

  1. C++ में बाइनरी सर्च ट्री इटरेटर

    मान लीजिए हम बाइनरी ट्री के लिए एक इटरेटर बनाना चाहते हैं। दो तरीके होंगे। अगला () विधि अगले तत्व को वापस करने के लिए है, और hasNext () विधि बूलियन मान वापस करने के लिए है, जो इंगित करेगा कि अगला तत्व मौजूद है या नहीं। तो अगर पेड़ जैसा है - और फ़ंक्शन कॉल का क्रम [अगला (), अगला (), है नेक्स्ट (),