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