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

C++ में पिछली संख्या का बाइनरी प्रतिनिधित्व

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

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

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

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

इस समस्या को हल करने के लिए, हमें बाइनरी घटाव की मूल बातें जानने की जरूरत है। आइए देखें कि क्या होता है जब 1 को 0 से घटाया जाता है या 1 बाइनरी रूप में। 0 - 1 =1 + 1 अगले बिट से ले जाता है। 1 - 1 =0.

आइए समस्या को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं,

Input : 101101100
Output : 101101011
Explanation : (101101100)2 Is the binary representation of 364. The number preceding it is 363 whose
binary representation is (101101011)2 . we have used binary subtraction here and subtracted (1)2 
from the binary representation of the number to yield the result .

आइए इस कार्यक्रम के पीछे तर्क देखें और फिर हम अपने तर्क के आधार पर एक एल्गोरिदम तैयार करेंगे। यहां हमें संख्या के द्विआधारी प्रतिनिधित्व से एक घटाना होगा। इसके लिए, हम दाईं ओर से शुरू करेंगे और सभी शून्यों को 1 तक फ्लिप करेंगे, जब तक कि 1 सामने न आ जाए। जब 1 का सामना करना पड़ता है, तो हम 1 से 0 तक फ़्लिप करेंगे और अंतिम परिणाम लौटाएंगे।

एल्गोरिदम

Step 1 : Start right to left i.e n-1 to 0.
Step 2 : If 1 is encounter change it to 0 and break.
Step 3 : If 0 is encountered, change it 1.
Step 4 : Print the array.

उदाहरण

उपरोक्त एल्गोरिथम का कार्यक्रम कार्यान्वयन -

#include <bits/stdc++.h>
using namespace std;
string previousNumber(string num) {
   int n = num.size();
   if (num.compare("1") == 0)
      return "0";
      int i;
   for (i = n - 1; i >= 0; i--) {
      if (num.at(i) == '1') {
         num.at(i) = '0';
         break;
      } else
      num.at(i) = '1';
   }
   if (i == 0)
      return num.substr(1, n - 1);
      return num;
}
int main() {
   string number = "1011011000";
   cout<<"the Binary representation of the number is "<<number<<endl;
   cout<<"Binary representation of previous number is "<<previousNumber(number);
   return 0;
}

आउटपुट

The Binary representation of the number is 1011011000
Binary representation of previous number is 1011010111

  1. C++ में मितव्ययी संख्या

    इस समस्या में, हमें एक धनात्मक पूर्णांक N दिया जाता है। हमारा कार्य यह जाँचने के लिए एक प्रोग्राम बनाना है कि दी गई संख्या मितव्ययी संख्या है या नहीं। मितव्ययी संख्या - एक संख्या जिसके अंकों की संख्या दी गई संख्या के अभाज्य गुणनखंड में अंकों की संख्या से अधिक है। उदाहरण − 625, संख्या 625 का अभाज्

  1. सी ++ अन्य की शक्तियों में एक संख्या का प्रतिनिधित्व

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

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

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