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

जावा प्रोग्राम: पूर्णांक में सेट बिट्स गिनना

उदाहरण

import java.io.*; 

public class Demo { 
    static int setBitsCount(int num) { 
        int count = 0; 
        while (num > 0) { 
            num &= (num - 1); 
            count++; 
        } 
        return count; 
    } 
    
    public static void main(String args[]) { 
        int num = 11; 
        System.out.println("11 में सेट बिट्स की संख्या है: "); 
        System.out.println(setBitsCount(num)); 
    } 
}

आउटपुट

11 में सेट बिट्स की संख्या है 3

व्याख्या: उपरोक्त ब्रायन कर्निघन एल्गोरिदम का कार्यान्वयन है। Demo क्लास में 'setBitsCount' नामक एक स्टेटिक फंक्शन होता है। यह फंक्शन जांचता है कि संख्या 0 है या नहीं, और यदि नहीं, तो 'count' नामक एक वेरिएबल को 0 असाइन करता है। यह संख्या और संख्या से 1 कम पर 'and' ऑपरेशन करता है।

अगला, इस ऑपरेशन के बाद 'count' मान इन्क्रीमेंट किया जाता है। अंत में, काउंट मान लौटाया जाता है। मुख्य फंक्शन में, वह मान जिसके सेट बिट्स ढूंढने हैं, परिभाषित किया जाता है। फंक्शन को संख्या को पैरामीटर के रूप में पास करके कॉल किया जाता है। प्रासंगिक संदेश कंसोल पर प्रदर्शित होते हैं।

ब्रायन कर्निघन एल्गोरिदम:

n & (n-1) दाएं से सबसे कम महत्वपूर्ण सेट बिट को अनसेट करता है।

11 = 1011 (बाइनरी)
11 & 10 = 1011 & 1010 = 1010 (10) - count=1
10 & 9  = 1010 & 1001 = 1000 (8)  - count=2
8  & 7  = 1000 & 0111 = 0000 (0)  - count=3
रुकें। कुल सेट बिट्स = 3

समय जटिलता: O(सेट बिट्स की संख्या) - सर्वोत्तम संभव

अन्य दृष्टिकोण:

विधिकोडजटिलताटिप्पणी
ब्रायन कर्निघनn &= (n-1)O(सेट बिट्स)सेट बिट्स के लिए सबसे तेज
बिल्ट-इनInteger.bitCount(n)O(1) हार्डवेयरJDK 1.5+, अत्यधिक अनुकूलित
शिफ्ट और काउंटwhile(n>0){c+=n&1;n>>=1;}O(लॉग n)सभी बिट्स जांचता है
लुकअप टेबलप्रीकंप्यूटेड बाइट काउंट्सO(1)बड़े डेटा के लिए तेज
पैरेलल स्ट्रीमLong.bitCount के साथO(1)Java 8+

उपयोग केस:

  • हैमिंग वेट/दूरी गणना
  • बिट मैनिपुलेशन समस्याएं
  • सबसेट जनरेशन (बिटमास्क)
  • कंप्रेशन एल्गोरिदम
  • ग्राफिक्स (पॉपकाउंट)

लॉन्ग के लिए:

long count = Long.bitCount(longValue);
  1. JSlider में एक्सटेंट सेट करने के लिए Java प्रोग्राम JSlider में एक्सटेंट सेट करने के लिए Java प्रोग्राम

    स्लाइडर के एक्सटेंट को सेट करने के लिए, setExtent() मेथड का उपयोग करें। यह नॉब द्वारा कवर की गई रेंज का आकार सेट करता है - JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 100, 70); slider.setMinorTickSpacing(5); slider.setMajorTickSpacing(20); slider.setPaintTicks(true); slider.setPaintLabels(t

  1. - पायथन प्रोग्राम: 1 से n तक सभी नंबर्स में टोटल सेट बिट्स गिनना

    एक पॉजिटिव इंटीजर n दिया गया है, फिर हम इसे बाइनरी प्रतिनिधित्व में बदलते हैं और टोटल सेट बिट्स की संख्या गिनते हैं।उदाहरणInput: n=3 Output: 4एल्गोरिदमचरण 1: पॉजिटिव इंटीजर डेटा इनपुट करें। चरण 2: फिर इसे बाइनरी फॉर्म में कन्वर्ट करें। चरण 3: वेरिएबल s = 0 इनिशियलाइज़ करें। चरण 4: हर एलिमेंट को ट्रै

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

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