CalcOpenly
हिन्दी

बिटवाइज़ कैलकुलेटर (AND, OR, XOR, NOT और शिफ़्ट)

8 से 64-बिट पूर्णांकों पर AND, OR, XOR, NOT, NAND, NOR, शिफ़्ट और रोटेशन करें; दशमलव, हेक्स, बाइनरी और हर बिट की सारणी देखें।

AI लेखन टूल से मसौदा तैयारअपडेट किया गया जाँचे गए उदाहरण: 8

दशमलव या 0x, 0b, 0o उपसर्ग लें। ऋणात्मक संख्या टूज़ कॉम्प्लीमेंट में रखी जाती है।
आज़माएँ
परिणाम
परिणाम: 72
पूर्ण संख्या; निकटतम; बराबर दूरी पर शून्य से दूर
हेक्स
0x48
बाइनरी
0100 1000
ऑक्टल
0o110
1 पर सेट बिट
2

A AND B का परिणाम 0x48 (0100 1000) है, जिसका अर्थ चिह्न सहित या अहस्ताक्षरित, दोनों में 72 है; 8 में से 2 बिट 1 हैं।

8-बिट AND

A
1
1
0
0
1
0
1
0
B
0
1
0
1
1
1
0
0
परिणाम (AND)
0
1
0
0
1
0
0
0
गणना कैसे होती है S
  1. इनपुट को 8-बिट पैटर्न में लिखें

    A=1100 1010,B=0101 1100A = \texttt{1100\,1010},\quad B = \texttt{0101\,1100}

    ऋणात्मक इनपुट, 2⁸ = 256 में से उनका परिमाण घटाकर रखे जाते हैं (टूज़ कॉम्प्लीमेंट)।

  2. हर बिट पर AND लगाएँ

    1100 1010∧ 0101 11000100 1000\begin{array}{rr}& \texttt{1100\,1010} \\ \land\ & \texttt{0101\,1100} \\ \hline & \texttt{0100\,1000}\end{array}

    परिणाम बिट: केवल दोनों बिट 1 होने पर 1।

  3. अहस्ताक्षरित पढ़ें

    ∑bi 2i=72\sum b_i\,2^i = 72

बिटवाइज़ कैलकुलेटर (AND, OR, XOR, NOT और शिफ़्ट) के बारे में

बिटवाइज़ संक्रियाएँ हर बिट स्थान पर अलग काम करती हैं: AND केवल दोनों बिट 1 होने पर 1 देता है; OR किसी एक के 1 होने पर; XOR अलग होने पर; NOT हर बिट पलटता है। शिफ़्ट पूरा पैटर्न बाएँ या दाएँ ले जाता है और खाली स्थान शून्य से भरता है। अंकगणितीय दाएँ शिफ़्ट में चिह्न बिट की प्रतियाँ भरती हैं। रोटेशन में एक सिरे से निकले बिट दूसरे सिरे पर लौटते हैं। हर परिणाम चुनी 8, 16, 32 या 64-बिट चौड़ाई तक सीमित है।

प्रोग्रामर बिट मास्क, फ़्लैग, अनुमतियाँ और हार्डवेयर रजिस्टर बनाने-जाँचने में इसका उपयोग करते हैं। डिफ़ॉल्ट 8 बिट में 0xCA AND 0x5C केवल दोनों के साझा 1 बिट रखता है: 1100 1010 AND 0101 1100 = 0100 1000, यानी 0x48 या 72। उसी युग्म का XOR 0x96 है; अहस्ताक्षरित 150 या चिह्न सहित −106।

ऋणात्मक इनपुट टूज़ कॉम्प्लीमेंट में रखे जाते हैं, इसलिए 16 बिट में −1 = 0xFFFF है।

सूत्र में U बिना चिह्न का मान, S चिह्न सहित मान, b_i स्थान i का बिट और w चौड़ाई है।

AND, OR और XOR से बिटों की तुलना करें

AND में दोनों बिट 1 हों तभी 1 मिलता है। OR में कोई एक 1 पर्याप्त है; XOR में अलग बिटों पर 1 आता है। 8 बिट में 0xCA AND 0x5C = 0x48 = 72 है: 1100 1010 और 0101 1100 की साझा 1 स्थितियाँ 0100 1000 हैं। इसी जोड़ी का OR 222 और XOR 150 है।

NOT हर बिट पलटता है: 8 बिट में NOT 0xCA → 0x35 = 53। चौड़ाई बताए बिना NOT का अर्थ अधूरा है; 16 बिट में परिणाम 0xFF35 होगा। यहाँ 8, 16, 32 और 64 बिट उपलब्ध हैं।

Signed और unsigned एक ही बिटों की दो व्याख्याएँ हैं

8 बिट का 0x96 unsigned में 150 है; signed में 150 − 256 = −106 है। 8 बिट की signed सीमा −128 से 127, unsigned सीमा 0 से 255 है। ऋणात्मक −3 का पैटर्न 256 − 3 = 253, यानी 0xFD है। C के N3096 ड्राफ़्ट में पूर्णांक निरूपण और शिफ़्ट के नियम दिए हैं।

इनपुट दशमलव या 0x, 0b, 0o उपसर्ग में दें। भिन्न बिटवाइज़ ऑपरेंड नहीं हैं। बिट-चौड़ाई में फिट होने वाला पूर्णांक दें; बड़े मान के लिए चौड़ाई बढ़ाएँ।

शिफ़्ट और रोटेशन का अंतर

0xCA को 8 बिट में दो स्थान बाएँ करने पर 0x28 = 40 मिलता है। 202 × 4 = 808 का ऊपरी हिस्सा कटता है; निचले 8 बिट बचते हैं। लॉजिकल दायाँ शिफ़्ट बाएँ शून्य भरता है: 0x32 = 50। अर्थमेटिक दायाँ शिफ़्ट sign bit दोहराता है: 0xF2, signed में −14।

रोटेशन में किनारे से निकला बिट दूसरी ओर लौटता है। उसी पैटर्न का बायाँ रोटेशन 0x2B = 43 और दायाँ 0xB2 = 178 है। गिनती चौड़ाई से बड़ी हो तो रोटेशन उसका शेष लेता है। शिफ़्ट के सीमांत नियम भाषाओं में अलग हैं; कैलकुलेटर का परिणाम हर भाषा का निष्पादन-नियम नहीं है।

जाँचे हुए बिट-पैटर्न

स्थितिदशमलव परिणामहेक्स परिणाम1 बिटों की संख्या
मूल उदाहरण720x482
Signed XOR-1060x964
ऋणात्मक अर्थमेटिक शिफ़्ट-20xFE7
ऋणात्मक लॉजिकल शिफ़्ट1260x7E6
64-बिट सटीकता90071992547409920x00200000000000001

दोनों ऋणात्मक शिफ़्ट पंक्तियाँ −3 को एक स्थान दाएँ करती हैं। अंतिम पंक्ति में 9,007,199,254,740,993 XOR 1 = 9,007,199,254,740,992 है। सामान्य JavaScript Number पहले मान को सटीक नहीं रख सकता; इस काम में उपकरण पूर्णांकों के लिए BigInt इस्तेमाल करता है।

मास्क लगाते समय किन बातों पर ध्यान दें

बिट n सेट करने के लिए x | (1 << n), साफ़ करने के लिए x & ~(1 << n) और पलटने के लिए x ^ (1 << n) है। जाँच (x & (1 << n)) != 0 से करें। भाषा की operator precedence के कारण कोष्ठक छोड़ने पर अर्थ बदल सकता है।

केवल आधार बदलना हो तो बाइनरी/हेक्स कन्वर्टर इस्तेमाल करें। नेटवर्क मास्क का उदाहरण सबनेट कैलकुलेटर में देखें।

हल किए गए उदाहरण

0xCA AND 0x5C (8-बिट)

संक्रिया
A AND B
A
0xCA
B
0x5C
चौड़ाई
8-बिट
परिणाम कैसे पढ़ें
अहस्ताक्षरित
परिणाम
72
हेक्स
0x48
बाइनरी
0100 1000
1 पर सेट बिट
2

जाँच का स्रोत: स्वतंत्र गणना

XOR को चिह्न सहित पढ़ें

संक्रिया
A XOR B
A
0xCA
B
0x5C
चौड़ाई
8-बिट
परिणाम कैसे पढ़ें
चिह्न सहित
परिणाम
-106
हेक्स
0x96
वही बिट, दूसरा अर्थ
150 as unsigned

जाँच का स्रोत: स्वतंत्र गणना

64 बिट में NOT 0 (सीमा जाँच)

संक्रिया
NOT A
A
0
चौड़ाई
64-बिट
परिणाम कैसे पढ़ें
अहस्ताक्षरित
परिणाम
18446744073709551615
हेक्स
0xFFFFFFFFFFFFFFFF
वही बिट, दूसरा अर्थ
-1 as signed
1 पर सेट बिट
64

जाँच का स्रोत: स्वतंत्र गणना

अंकगणितीय दाएँ शिफ़्ट चिह्न रखता है

संक्रिया
A को दाएँ शिफ़्ट करें (अंकगणितीय, चिह्न बिट भरें)
A
-128
इतने बिट शिफ़्ट करें
2
चौड़ाई
8-बिट
परिणाम कैसे पढ़ें
चिह्न सहित
परिणाम
-32
हेक्स
0xE0

जाँच का स्रोत: -32 & 0xFF = 0xE0

सवाल

XOR क्या करता है?

XOR (एकांतिक OR) बिट अलग होने पर 1 और समान होने पर 0 देता है। इसलिए 0xCA XOR 0x5C = 0x96। इसके गुण x XOR x = 0 और एक ही कुंजी दो बार लगाने पर मूल मान लौटना हैं। यह फ़्लैग पलटने, पैरिटी व चेकसम निकालने और सरल कूटलेखन में काम आता है। C, Java, JavaScript और Python में चिह्न ^ है।

तार्किक और अंकगणितीय दाएँ शिफ़्ट में क्या अंतर है?

तार्किक दाएँ शिफ़्ट में खाली ऊपरी बिट 0 से भरते हैं। अंकगणितीय शिफ़्ट चिह्न बिट की प्रतियाँ भरता है, जिससे ऋणात्मक मान ऋणात्मक रहता है। 8 बिट में 0x80 को तार्किक रूप से 2 दाएँ खिसकाने पर 0x20 (32), लेकिन −128 को अंकगणितीय रूप से खिसकाने पर 0xE0 (−32) मिलता है। Java और JavaScript में तार्किक >>> और अंकगणितीय >> है; C में ऋणात्मक चिह्न सहित मान पर >> का व्यवहार कार्यान्वयन पर निर्भर है।

बिट मास्क कैसे काम करता है?

मास्क के 1 बिट वे स्थान चुनते हैं जिनमें आपकी रुचि है। AND उन्हें रखकर बाकी मिटाता है, OR उन्हें 1 करता है, XOR पलटता है और उलटे मास्क से AND उन्हें मिटाता है। x AND 0x0F निचले 4 बिट रखता है। 16 बिट में −1 AND 0x0F0F = 0x0F0F = 3855, क्योंकि −1 में सभी बिट 1 हैं। बिट n जाँचने के लिए देखें कि x AND (1 << n) शून्य से अलग है या नहीं।

बाएँ शिफ़्ट से संख्या पर क्या असर होता है?

n स्थान बाएँ शिफ़्ट, अहस्ताक्षरित मान को 2^n से गुणा करता है, जब तक ऊपर से कोई 1 बिट बाहर न निकले। 0x0F << 4 = 0xF0 = 240। चौड़ाई से बाहर के बिट खोते हैं, इसलिए 8 बिट में 0xFF << 4 भी 0xF0 है, 4,080 नहीं। C में प्रकार-विस्तार के बाद संकार्य की पूरी चौड़ाई या अधिक से शिफ़्ट अपरिभाषित है। x86 में 32-बिट संकार्य के लिए शिफ़्ट गिनती के निचले 5 और 64-बिट के लिए 6 बिट लिए जाते हैं।

पॉपकाउंट क्या है?

पॉपकाउंट (जनसंख्या गणना या Hamming भार) किसी मान में 1 बिटों की संख्या है: 0x48 = 0100 1000 में 2, और 64 बिट में NOT 0 में 64। x86 में POPCNT निर्देश, C++20 में std::popcount और Java में Integer.bitCount है। यह सेट फ़्लैग गिनता है और दो मानों की Hamming दूरी popcount(a XOR b) देता है।

इस कैलकुलेटर के बारे में

U=∑i=0w−1bi 2iS=−bw−1 2w−1+∑i=0w−2bi 2i\begin{aligned} U &= \sum_{i=0}^{w-1} b_i\,2^i \\ S &= -b_{w-1}\,2^{w-1} + \sum_{i=0}^{w-2} b_i\,2^i\end{aligned}

स्रोत

  1. ISO/IEC 9899:2024 (C23) §6.5.7 bitwise shift operators and §6.5.10–6.5.12 bitwise AND, XOR, OR (draft N3096)
  2. Intel 64 and IA-32 Architectures Software Developer's Manual, Vol. 2 — SAL/SAR/SHL/SHR and ROL/ROR

संदर्भों से जाँच की गई

इस कैलकुलेटर में स्वतंत्र स्रोतों के उत्तरों वाले 8 हल किए गए उदाहरण शामिल हैं। ये परीक्षण समूह में चलते हैं और आप इन्हें यहाँ भी चला सकते हैं।

यह कैलकुलेटर अपनी वेबसाइट पर लगाएँ

जहाँ कैलकुलेटर दिखाना है, वहाँ इसे पेस्ट करें। इसका उपयोग मुफ़्त है, यहाँ किए गए सुधार इसमें अपने आप पहुँच जाते हैं, और उसके नीचे की श्रेय पंक्ति मूल पेज का लिंक देती है, जिससे आपके पाठक पूरा संस्करण देख सकते हैं।

ऊँचाई
एम्बेड का पूर्वावलोकन देखें

श्रेय पंक्ति बनी रहने दें। यही एकमात्र शर्त है, और इसी से ये कैलकुलेटर मुफ़्त रहते हैं।