बिटवाइज़ कैलकुलेटर

पूर्णांकों पर बिटवाइज़ ऑपरेशन करें और परिणामों को दशमलव, हेक्स और बाइनरी में देखें।

मान दर्ज करें और गणना करें पर क्लिक करें।

यह कैसे काम करता है

  1. दो संख्याएँ दर्ज करें: दशमलव, बाइनरी (0b उपसर्ग) या हेक्साडेसिमल (0x उपसर्ग) में मान दर्ज करें।
  2. ऑपरेशन चुनें: AND, OR, XOR, NOT, बायाँ शिफ़्ट (<<) या दायाँ शिफ़्ट (>>) चुनें।
  3. परिणाम देखें: आउटपुट परिणाम को दशमलव, बाइनरी और हेक्साडेसिमल में एक साथ प्रदर्शित करता है।

बिटवाइज़ कैलकुलेटर क्यों इस्तेमाल करें?

बिटवाइज़ ऑपरेशन सिस्टम प्रोग्रामिंग, क्रिप्टोग्राफ़ी, गेम डेवलपमेंट, ग्राफ़िक्स, नेटवर्किंग आदि में मौलिक हैं।

विशेषताएँ

अक्सर पूछे जाने वाले प्रश्न

प्रोग्रामिंग में XOR का उपयोग किस लिए होता है?

XOR (^) बिट्स को फ़्लिप करने, सरल एन्क्रिप्शन/ऑब्फ़्यूसकेशन, बिना अस्थायी चर के वेरिएबल स्वैप करने, समता जाँचने और हैश मिलाने के लिए उपयोग होता है। यह 1 लौटाता है जब बिट्स भिन्न होते हैं और 0 जब वे समान होते हैं।

<< और >> में क्या अंतर है?

बायाँ शिफ़्ट (<<) सभी बिट्स को बाईं ओर ले जाता है, जो 2 के पावर से गुणा करने के बराबर है। दायाँ शिफ़्ट (>>) बिट्स को दाईं ओर ले जाता है, जो 2 के पावर से भाग देने के बराबर है। अंकगणित दायाँ शिफ़्ट चिह्न बिट को संरक्षित करता है; तार्किक दायाँ शिफ़्ट शून्य से भरता है।

मैं एक विशिष्ट बिट को कैसे सक्षम या अक्षम करूँ?

बिट n को सक्षम करने के लिए: value |= (1 << n)। बिट n को अक्षम करने के लिए: value &= ~(1 << n)। बिट n को फ़्लिप करने के लिए: value ^= (1 << n)। यह जाँचने के लिए कि बिट n सक्षम है: (value & (1 << n)) !== 0।

बूलियन बीजगणित से सिलिकॉन तक: बिटवाइज़ ऑपरेशन कैसे सार्वभौमिक बन गए

हर आधुनिक CPU जो बिटवाइज़ ऑपरेशन लागू करता है, वे 80 साल से अधिक के अंतराल में प्रकाशित दो आधारभूत पत्रों से आते हैं। 1854 में, George Boole ने «An Investigation of the Laws of Thought» प्रकाशित किया, जिसमें दो-मूल्यी तर्क के बीजगणित को परिभाषित किया, AND, OR, NOT, और उनकी पहचान। यह एक दार्शनिक कार्य था, इंजीनियरिंग नहीं। फिर 1937 में, MIT के एक 21 वर्षीय स्नातक छात्र Claude Shannon ने अपनी मास्टर्स थीसिस «A Symbolic Analysis of Relay and Switching Circuits» लिखी, यह साबित करते हुए कि बूलियन बीजगणित विद्युत रिले सर्किट का वर्णन कर सकता है और इसलिए कि कोई भी तार्किक संगणना भौतिक रूप से लागू की जा सकती है। इस थीसिस को व्यापक रूप से 20वीं सदी की सबसे महत्वपूर्ण मास्टर्स थीसिस के रूप में उद्धृत किया जाता है और यह सभी डिजिटल इलेक्ट्रॉनिक्स की नींव है। दो का पूरक, हर CPU द्वारा उपयोग की जाने वाली नकारात्मक संख्याओं के लिए बाइनरी प्रतिनिधित्व, 1962 में Burroughs Corporation द्वारा पेटेंट कराया गया था लेकिन IBM 704 (1954) और अन्य प्रारंभिक मशीनों में पहले से ही उपयोग किया गया था। IEEE 754 ने 1985 में फ्लोटिंग-पॉइंट प्रतिनिधित्व को मानकीकृत किया, हर JavaScript Number द्वारा अभी भी उपयोग किए जाने वाले बिट लेआउट को तय किया, binary64 के लिए 1 साइन बिट, 11 घातांक, 52 मंटिसा। आज, C भाषा ऑपरेटर & | ^ ~ << >> लगभग सीधे एकल CPU निर्देशों से मैप होते हैं, यही कारण है कि बिटवाइज़ कोड अंकगणितीय समकक्ष से नाटकीय रूप से तेज़ हो सकता है।

छह ऑपरेटर, बिट स्तर पर वे क्या करते हैं

जहाँ बिटवाइज़ वास्तव में अपना भुगतान कमाता है

गलतियाँ जो काटती हैं

क्यों दो का पूरक, और इसका बिट स्तर पर क्या अर्थ है

हर आधुनिक CPU दो के पूरक का उपयोग करके नकारात्मक पूर्णांकों का प्रतिनिधित्व करती है। एक हस्ताक्षरित 8-बिट बाइट में, मान 0 से 127 बाइनरी 0000_0000 से 0111_1111 के रूप में एन्कोड किए जाते हैं। फिर −1 1111_1111 के रूप में एन्कोड किया जाता है, −2 1111_1110 के रूप में, नीचे −128 तक 1000_0000 के रूप में। कारण: इस एन्कोडिंग के साथ, अतिरिक्त समान तरीके से काम करता है चाहे इनपुट हस्ताक्षरित हों या अहस्ताक्षरित, CPU को अलग add-signed और add-unsigned निर्देशों की आवश्यकता नहीं है। असममितता यह है कि नकारात्मक सीमा सकारात्मक से एक बड़ी है (8 बिट में, −128 से +127), यही कारण है कि Math.abs(INT_MIN) स्थिर-चौड़ाई पूर्णांकों वाली हर भाषा में ओवरफ्लो होता है। पहले के साइन-मैग्निट्यूड (साइन के लिए एक बिट, बाकी परिमाण के लिए) और एक के पूरक एन्कोडिंग 1950-60 के दशक में मौजूद थे लेकिन दो के पूरक से हार गए क्योंकि उनके पास शून्य की दो अभ्यावेदन थीं और निषेध के लिए विशेष-मामले हार्डवेयर की आवश्यकता थी।

अधिक अक्सर पूछे जाने वाले प्रश्न

~5 250 के बजाय -6 के बराबर क्यों है?

क्योंकि दो के पूरक (एन्कोडिंग जो हर आधुनिक CPU उपयोग करती है) में, सकारात्मक संख्या के हर बिट को पलटने से आपको -n - 1 मिलता है। तो ~5 === -6 और ~0 === -1। एक अहस्ताक्षरित 8-बिट संदर्भ में, ~5 के समान बिट पैटर्न (बाइनरी 1111_1010) 250 का प्रतिनिधित्व करेगा। JavaScript परिणाम को हस्ताक्षरित 32-बिट के रूप में मानता है, इसलिए आप -6 देखते हैं। अहस्ताक्षरित व्याख्या प्राप्त करने के लिए: 32-बिट में (~5) >>> 0, जो 4294967290 देता है, या ~5 & 0xFF के साथ 8 बिट तक मास्क करें जो 250 देता है।

क्या XOR वास्तव में एक एन्क्रिप्शन है?

XOR हर आधुनिक सममित सिफर का बिल्डिंग ब्लॉक है, लेकिन XOR अकेले सुरक्षित एन्क्रिप्शन नहीं है। एक एक-बार पैड, संदेश जितनी लंबी सच में यादृच्छिक कुंजी के साथ XOR, ठीक एक बार उपयोग किया गया, सूचना-सैद्धांतिक रूप से अटूट है (Shannon, 1949)। कुंजी का पुन: उपयोग करें, या संदेश से छोटी कुंजी का उपयोग करें, और आवृत्ति विश्लेषण इसे तुच्छ रूप से तोड़ देता है। AES जैसे वास्तविक सिफर एक छोटी कुंजी को छद्म यादृच्छिक बाइट्स की धारा में बढ़ाने के लिए XOR प्लस प्रसार और प्रतिस्थापन का उपयोग करते हैं जो कुंजी के बिना किसी को भी एक-बार पैड की तरह दिखता है। तो «XOR के साथ एन्क्रिप्ट करें» केवल तुच्छ अस्पष्टीकरण के लिए ठीक है, वास्तविक रहस्यों के लिए कभी नहीं।

बिट हेरफेर के लिए मुझे Number के बजाय BigInt का उपयोग कब करना चाहिए?

जब भी आपको 32 बिट से अधिक बिटवाइज़ सटीकता की आवश्यकता हो। JavaScript बिटवाइज़ ऑपरेटर गणना से पहले Number ऑपरेंड को 32-बिट हस्ताक्षरित पूर्णांकों में छोटा कर देते हैं। यदि आपको 64-बिट मास्क की आवश्यकता है (उदा। 64-बिट फ़ीचर फ़्लैग सेट में हेरफेर, Linux mmap ऑफ़सेट के साथ काम करना, या SHA-512 लागू करना), BigInt का उपयोग करें: 0xFFFFFFFFFFFFFFFFn & 0xFFn === 255n। BigInt Number से धीमा है, संचालन के आधार पर ~3-10×, इसलिए इसे उन मामलों के लिए आरक्षित करें जहाँ 32 बिट वास्तव में बहुत कम हैं।

मैं एक संख्या में 1 बिट्स की संख्या कैसे गिनता हूँ?

यह जनसंख्या गिनती या हैमिंग वज़न है। अधिकांश आधुनिक CPU में इसके लिए एक एकल निर्देश होता है (x86 पर POPCNT, ARM पर VCNT)। JavaScript में, कोई अंतर्निहित नहीं है, इसलिए बिट-ट्विडलिंग क्लासिक का उपयोग करें: let c = 0; while (x) { c += x & 1; x >>>= 1; }। या Hacker's Delight से समानांतर SWAR ट्रिक: x = x - ((x >> 1) & 0x55555555); x = (x & 0x33333333) + ((x >> 2) & 0x33333333); x = (x + (x >> 4)) & 0x0F0F0F0F; return (x * 0x01010101) >>> 24;, जो 32-बिट पूर्णांक में बिट्स को लगभग एक दर्जन चक्रों में गिनती है।

जब मैं इस कैलकुलेटर का उपयोग करता हूँ तो क्या मेरा डेटा कहीं भेजा जाता है?

नहीं। हर ऑपरेशन आपके ब्राउज़र के JavaScript इंजन में चलता है, गणना के दौरान कोई नेटवर्क कॉल नहीं होती है। DevTools में नेटवर्क टैब खोलें और गणना पर क्लिक करें, आप शून्य आउटबाउंड अनुरोध देखेंगे। संवेदनशील मास्क, कुंजी या मालिकाना बिट-लेआउट कार्य के लिए सुरक्षित।

संबंधित टूल

बाइनरी से पाठ संख्या आधार कनवर्टर chmod कैलकुलेटर मुफ़्त हैश जनरेटर