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