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

सी ++ में एक सीमा में सेट बिट्स की गणना करें


हमें एक पूर्णांक संख्या दी गई है, मान लीजिए, संख्या और सीमा बाएँ और दाएँ मानों के साथ। कार्य पहले किसी संख्या के बाइनरी अंक की गणना करना है और फिर लूप को बाएं अंक से दाएं अंक तक सेट करना है और फिर दी गई सीमा में सेट बिट्स की गणना करना है।

बाइनरी संख्या में सेट बिट्स को 1 द्वारा दर्शाया जाता है। जब भी हम किसी पूर्णांक मान की बाइनरी संख्या की गणना करते हैं तो यह 0 और 1 के संयोजन के रूप में बनता है। तो, अंक 1 को कंप्यूटर के संदर्भ में सेट बिट के रूप में जाना जाता है।

इनपुट - पूर्णांक संख्या =50, बाएँ =2, दाएँ =5

आउटपुट − एक श्रेणी में कुल सेट बिट्स की संख्या है − 2

स्पष्टीकरण -:एक संख्या 50 का द्विआधारी प्रतिनिधित्व 110010 है और हमारे पास एक सीमा है जो बाएं =2 से शुरू होती है जो कि 1 के रूप में बिट होती है और दाईं ओर समाप्त होती है =5 जिसमें बिट 1 होता है और सीमा के बीच में हमारे पास केवल 0 होता है। तो गिनती 2 है।

इनपुट - इंट नंबर =42, लेफ्ट =3, राइट 4

आउटपुट - एक श्रेणी में कुल सेट बिट्स की संख्या है - 1

स्पष्टीकरण - एक संख्या 42 का द्विआधारी प्रतिनिधित्व 101010 है और हमारे पास एक सीमा है जो बाएं =3 से शुरू होती है जो कि 1 के रूप में बिट होती है और दाईं ओर समाप्त होती है =4 जिसमें बिट 0 होता है और सीमा के बीच में हमारे पास केवल एक अंक होता है। तो गिनती 1 है।

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

  • संख्या को पूर्णांक प्रकार के एक चर में इनपुट करें और साथ ही बाएं और दाएं पूर्णांक मानों के साथ श्रेणी भी दर्ज करें।

  • अहस्ताक्षरित int प्रकार के सेट बिट्स की कुल संख्या को संग्रहीत करने के लिए एक चर गणना घोषित करें

  • I से 1<<7 और i> 0 और i से i / 2

    . तक के लिए लूप प्रारंभ करें
  • लूप के अंदर, num &1 ==TRUE चेक करें फिर 1 प्रिंट करें और प्रिंट करें 0

  • संख्या 0 नहीं होने तक बिट्स की कुल संख्या की गणना करने के लिए लूप प्रारंभ करें

  • लूप के अंदर, गिनती =गिनती + संख्या और 1 सेट करें और संख्या भी सेट करें>>=1

  • एक अस्थायी चर सेट करें, मान लें कि a ((1 <<दाएं) - 1) ^ ((1 <<(बाएं - 1)) - 1);

  • साथ ही, गिनती और ए के साथ गिनती सेट करें

  • गिनती प्रिंट करें

उदाहरण

#include<iostream>
using namespace std;
//Count total bits in a range
unsigned int bits(unsigned int number, unsigned int left, unsigned int right){
   unsigned int count = 0;
   unsigned i;
   //display the total 8-bit number
   cout<<"8-bit digits of "<<number<<" is: ";
   for (i = 1 << 7; i > 0; i = i / 2){
      (number & i)? cout<<"1": cout<<"0";
   }
   //calculate the total bits in a number
   while (number){
      count += number & 1;
      number >>= 1;
   }
   //calculate the set bit in a range
   int a = ((1 << right) - 1) ^ ((1 << (left - 1)) - 1);
   count = count & a;
   cout<<"\nCount of total set bits in a range are: "<<count;
}
int main(){
   unsigned int number = 42;
   unsigned int left = 2, right = 5;
   bits(number, left, right);
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

8-bit digits of 42 is: 00101010
Count of total set bits in a range are: 2

  1. सी में फ्लोटिंग पॉइंट नंबर में सेट बिट्स को कैसे गिनें?

    इस समस्या में, एक फ्लोटिंग पॉइंट मान दिया जाता है। हमें इसके द्विआधारी प्रतिनिधित्व में सेट बिट्स की संख्या का पता लगाना है। उदाहरण के लिए, यदि एक फ्लोटिंग पॉइंट नंबर 0.15625 है, तो छह सेट बिट्स हैं। एक ठेठ सी संकलक एकल परिशुद्धता फ़्लोटिंग पॉइंट प्रतिनिधित्व का उपयोग करता था। तो यह इस तरह दिखेगा।

  1. सी ++ में समान संख्या में सेट बिट्स के साथ अगली उच्च संख्या

    हमें एक संख्या n दी गई है, हमें उस संख्या को खोजना है जो n से बड़ी है और इसके द्विआधारी प्रतिनिधित्व में n के समान सेट बिट्स हैं। द्विआधारी प्रतिनिधित्व में अंक 1 को सेट बिट कहा जाता है। आइए एक उदाहरण देखें। इनपुट 124 आउटपुट 143 एल्गोरिदम संख्या का प्रारंभ करें n. एक फ़ंक्शन लिखें सेट ब

  1. C++ में एक सेट को k सबसेट में विभाजित करने के तरीकों की संख्या की गणना करें

    दो अंक e और p दिए गए हैं। लक्ष्य उन तरीकों की संख्या गिनना है जिनसे हम एक सेट के e तत्वों को p विभाजन/सबसेट में विभाजित कर सकते हैं। उदाहरण के लिए इनपुट e=4 p=2 आउटपुट Count of number of ways to partition a set into k subsets are: 7 स्पष्टीकरण If elements are: a b c d then ways to divide them into