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

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

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

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

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

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

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

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

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

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

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

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

  • अहस्ताक्षरित 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 unset bits in a range
unsigned int unset_bits(unsigned int number, unsigned int left, unsigned int right){
   unsigned int count = 0;
   unsigned int total_bits = 0;
   unsigned i;
   //display the 8-bit number
   cout<<"8-bit number of "<<number<<" is: ";
   for (i = 1 << 7; i > 0; i = i / 2){
      (number & i)? cout<<"1": cout<<"0";
   }
   //calculate total number of bits in a given range
   for(i = left; i<=right; i++){
      total_bits++;
   }
   //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;
   //subtract set bits from the total bits in a range
   count = total_bits - count;
   cout<<"\nCount of total unset bits in a range are: "<<count;
}
int main(){
   unsigned int number = 80;
   unsigned int left = 1, right = 4;
   unset_bits(number, left, right);
   return 0;
}

आउटपुट

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

8-bit number of 80 is: 01010000
Count of total unset bits in a range are: 2

  1. C++ में एक आयत में वर्गों की संख्या गिनें

    =B. लक्ष्य उन वर्गों की संख्या का पता लगाना है जिन्हें LXB आकार का एक आयत समायोजित कर सकता है। ऊपर दिया गया चित्र 3 X 2 आकार का एक आयत दिखाता है। इसमें 2, 2X2 वर्ग और 6,1X1 वर्ग हैं। कुल वर्ग=6+2=8. LXB आकार के प्रत्येक आयत में L*B संख्या 1X1 वर्ग होती है। सबसे बड़े वर्ग BXB आकार के होते ह

  1. सी ++ में सेट बिट्स की गिनती के अनुसार एक सरणी को क्रमबद्ध करें

    यहां हम सेट-बिट्स के आधार पर एक सरणी को सॉर्ट करने के लिए एक दिलचस्प समस्या देखेंगे। जब सरणी में एक तत्व में सेट-बिट्स की संख्या अधिक होती है, तो उसे दूसरे तत्व से पहले रखा जाएगा जिसमें सेट बिट्स की संख्या कम होती है। मान लीजिए कुछ संख्याएं 12, 15, 7 हैं। तो सेट बिट्स मूल रूप से उनके द्विआधारी प्रति

  1. एक श्रेणी में अनसेट बिट्स को गिनने के लिए पायथन प्रोग्राम।

    एक सकारात्मक संख्या और बिट्स की सीमा को देखते हुए। हमारा काम अनसेट बिट्स को एक रेंज में गिनना है। Input : n = 50, starting address = 2, ending address = 5 Output : 2 2 से 5 की सीमा में 2 अनसेट बिट्स हैं। एल्गोरिदम Step 1 : convert n into its binary using bin(). Step 2 : remove first two characte