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

C++ में रेंज में अनसेट बिट्स गिनना


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

इनपुट - int number = 50, left = 2, right = 5

आउटपुट - रेंज में कुल अनसेट बिट्स: 2

व्याख्या - 50 का बाइनरी: 110010। पोजीशन 2 से 5 के बीच (1-आधारित): बिट्स हैं 1,0,0,1 - दो अनसेट बिट्स।

उपयोग किया गया दृष्टिकोण

  • संख्या और रेंज इनपुट करें।
  • रेंज में कुल बिट्स = right - left + 1
  • रेंज में सेट बिट्स निकालने के लिए बिटमास्क बनाएं: mask = ((1 << right) - 1) ^ ((1 << (left-1)) - 1)
  • रेंज में सेट बिट्स = __builtin_popcount(number & mask)
  • अनसेट बिट्स = कुल बिट्स - सेट बिट्स।

उदाहरण (C++ कोड)

#include <iostream> 
using namespace std; 

unsigned int unset_bits_range(unsigned int number, unsigned int left, unsigned int right) { 
    unsigned int total_bits = right - left + 1; 
    // रेंज मास्क बनाएं 
    unsigned int mask = ((1u << right) - 1) ^ ((1u << (left - 1)) - 1); 
    unsigned int set_in_range = __builtin_popcount(number & mask); 
    unsigned int unset = total_bits - set_in_range; 
    cout << "8-bit number of " << number << " is: "; 
    for (unsigned int i = 1 << 7; i > 0; i >>= 1) 
        (number & i) ? cout << "1" : cout << "0"; 
    cout << "\nCount of total unset bits in range [" << left << "," << right << "] are: " << unset; 
    return unset; 
} 

int main() { 
    unsigned int number = 80, left = 1, right = 4; 
    unset_bits_range(number, left, right); 
    return 0; 
}

आउटपुट

8-bit number of 80 is: 01010000 Count of total unset bits in range [1,4] are: 2

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

    =B। लक्ष्य LxB आकार के आयत में समायोजित किए जा सकने वाले वर्गों की संख्या ढूंढना है। उपरोक्त आकृति 3x2 आकार के एक आयत को दर्शाती है। इसमें 2, 2x2 वर्ग और 6, 1x1 वर्ग हैं। कुल वर्ग = 6+2=8। LxB आकार के हर आयत में L*B संख्या के 1x1 वर्ग होते हैं। सबसे बड़े वर्ग BxB आकार के होते हैं। L=B=1 के लिए, वर

  1. - C++ में सेट बिट्स की संख्या के अनुसार ऐरे सॉर्ट करें

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

  1. - एक रेंज में अनसेट बिट्स गिनने के लिए पायथन प्रोग्राम

    समस्या विवरण एक धनात्मक संख्या और बिट्स की रेंज दी गई है। हमारा कार्य उस रेंज में अनसेट बिट्स (0) की संख्या गिनना है। उदाहरण इनपुट: n = 50, प्रारंभिक पता = 2, अंतिम पता = 5 आउटपुट: 2 रेंज 2 से 5 में 2 अनसेट बिट्स हैं। एल्गोरिदम bin() का उपयोग करके n को बाइनरी में बदलें। पहले दो वर्ण (0b) हटाएं।