जावास्क्रिप्ट बिटवाइज़ ऑपरेशंस
जावास्क्रिप्ट बिटवाइज़ ऑपरेटर्स
Operator | Name | Description |
---|---|---|
& | AND | Sets each bit to 1 if both bits are 1 |
| | OR | Sets each bit to 1 if one of two bits is 1 |
^ | XOR | Sets each bit to 1 if only one of two bits is 1 |
~ | NOT | Inverts all the bits |
<< | Zero fill left shift | Shifts left by pushing zeros in from the right and let the leftmost bits fall off |
>> | Signed right shift | Shifts right by pushing copies of the leftmost bit in from the left, and let the rightmost bits fall off |
>>> | Zero fill right shift | Shifts right by pushing zeros in from the left, and let the rightmost bits fall off |
उदाहरण
Operation | Result | Same as | Result |
---|---|---|---|
5 & 1 | 1 | 0101 & 0001 | 0001 |
5 | 1 | 5 | 0101 | 0001 | 0101 |
~ 5 | 10 | ~0101 | 1010 |
5 << 1 | 10 | 0101 << 1 | 1010 |
5 ^ 1 | 4 | 0101 ^ 0001 | 0100 |
5 >> 1 | 2 | 0101 >> 1 | 0010 |
5 >>> 1 | 2 | 0101 >>> 1 | 0010 |
जावास्क्रिप्ट 32 बिट बिटवाइज़ ऑपरेंड का उपयोग करता है
जावास्क्रिप्ट संख्याओं को 64 बिट फ्लोटिंग पॉइंट नंबरों के रूप में संग्रहीत करता है, लेकिन सभी बिटवाइज़ ऑपरेशन 32 बिट बाइनरी नंबरों पर किए जाते हैं।
बिटवाइज़ ऑपरेशन करने से पहले, जावास्क्रिप्ट संख्याओं को 32 बिट हस्ताक्षरित पूर्णांकों में परिवर्तित करता है।
बिटवाइज़ ऑपरेशन करने के बाद, परिणाम वापस 64 बिट्स जावास्क्रिप्ट नंबरों में परिवर्तित हो जाता है।
ऊपर दिए गए उदाहरण 4 बिट्स अहस्ताक्षरित बाइनरी नंबरों का उपयोग करते हैं। इस वजह से ~5 रिटर्न 10.
चूंकि जावास्क्रिप्ट 32 बिट हस्ताक्षरित पूर्णांकों का उपयोग करता है, यह 10 वापस नहीं करेगा। यह -6 लौटाएगा।
000000000000000000000000000001 (5)
11111111111111111111111111111010 (~5 = -6)
एक हस्ताक्षरित पूर्णांक ऋण चिह्न के रूप में बाईं ओर के बिट का उपयोग करता है।
बिटवाइज और
जब बिटवाइज़ और बिट्स की एक जोड़ी पर किया जाता है, तो यह 1 लौटाता है यदि दोनों बिट्स 1 हैं।
कार्यवाही | परिणाम |
---|---|
0 और 0 | 0 |
0 और 1 | 0 |
1 और 0 | 0 |
1 1 | 1 |
कार्यवाही | परिणाम |
---|---|
1111 और 0000 | 0000 |
1111 और 0001 | 0001 |
1111 और 0010 | 0010 |
1111 और 0100 | 0100 |
बिटवाइज OR
जब बिटवाइज़ OR बिट्स की एक जोड़ी पर किया जाता है, तो यह 1 लौटाता है यदि बिट्स में से एक 1 है:
कार्यवाही | परिणाम |
---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
कार्यवाही | परिणाम |
---|---|
1111 | 0000 | 1111 |
1111 | 0001 | 1111 |
1111 | 0010 | 1111 |
1111 | 0100 | 1111 |
बिटवाइज़ XOR
जब बिट्स की एक जोड़ी पर बिटवाइज़ XOR किया जाता है, तो बिट्स अलग होने पर यह 1 लौटाता है:
कार्यवाही | परिणाम |
---|---|
0 ^ 0 | 0 |
0 ^ 1 | 1 |
1 ^ 0 | 1 |
1 ^ 1 | 0 |
कार्यवाही | परिणाम |
---|---|
1111 ^ 0000 | 1111 |
1111 ^ 0001 | 1110 |
1111 ^ 0010 | 1101 |
1111 ^ 0100 | 1011 |
जावास्क्रिप्ट बिटवाइज़ और (&)
बिटवाइज़ और 1 तभी लौटाता है जब दोनों बिट 1 हों:
दशमलव | बायनरी |
---|---|
5 | 000000000000000000000000000001 |
1 | 00000000000000000000000000000001 |
5 और 1 | 00000000000000000000000000000001 (1) |
उदाहरण
let x = 5 & 1;
जावास्क्रिप्ट बिटवाइज़ या (|)
बिटवाइज़ या 1 लौटाता है यदि बिट्स में से एक 1 है:
दशमलव | बायनरी |
---|---|
5 | 000000000000000000000000000001 |
1 | 00000000000000000000000000000001 |
5 | 1 | 000000000000000000000000000001 (5) |
उदाहरण
let x = 5 | 1;
जावास्क्रिप्ट बिटवाइज़ XOR (^)
यदि बिट भिन्न हैं तो बिटवाइज़ XOR 1 लौटाता है:
दशमलव | बायनरी |
---|---|
5 | 000000000000000000000000000001 |
1 | 00000000000000000000000000000001 |
5 ^ 1 | 00000000000000000000000000000100 (4) |
उदाहरण
let x = 5 ^ 1;
जावास्क्रिप्ट बिटवाइज़ नहीं (~)
दशमलव | बायनरी |
---|---|
5 | 000000000000000000000000000001 |
~5 | 11111111111111111111111111111010 (-6) |
उदाहरण
let x = ~5;
जावास्क्रिप्ट (शून्य भरण) बिटवाइज़ लेफ्ट शिफ्ट (<<)
यह जीरो फिल लेफ्ट शिफ्ट है। एक या एक से अधिक शून्य बिट्स को दाईं ओर से धकेला जाता है, और सबसे बाईं ओर के बिट्स गिर जाते हैं:
दशमलव | बायनरी |
---|---|
5 | 000000000000000000000000000001 |
5 << 1 | 0000000000000000000000000000001010 (10) |
उदाहरण
let x = 5 << 1;
जावास्क्रिप्ट (साइन प्रिजर्विंग) बिटवाइज राइट शिफ्ट (>>)
यह सही बदलाव को संरक्षित करने वाला एक संकेत है। बाईं ओर से सबसे बाईं ओर की प्रतियां धकेल दी जाती हैं, और सबसे दाईं ओर गिर जाती हैं:
दशमलव | बायनरी |
---|---|
-5 | 11111111111111111111111111111111 |
-5 >> 1 | 11111111111111111111111111111101 (-3) |
उदाहरण
let x = -5 >> 1;
जावास्क्रिप्ट (जीरो फिल) राइट शिफ्ट (>>>)
यह जीरो फिल राइट शिफ्ट है। एक या अधिक शून्य बिट्स को बाईं ओर से धकेला जाता है, और सबसे दाहिना भाग गिर जाता है:
दशमलव | बायनरी |
---|---|
5 | 000000000000000000000000000001 |
5 >>> 1 | 00000000000000000000000000000010 (2) |
उदाहरण
let x = 5 >>> 1;
बाइनरी नंबर
केवल एक बिट सेट वाले बाइनरी नंबर को समझना आसान है:
बाइनरी प्रतिनिधित्व | दशमलव मान |
---|---|
00000000000000000000000000000001 | 1 |
00000000000000000000000000000010 | 2 |
00000000000000000000000000000100 | 4 |
0000000000000000000000000000001000 | 8 |
00000000000000000000000000010000 | 16 |
00000000000000000000000000100000 | 32 |
00000000000000000000000001000000 | 64 |
कुछ और बिट्स सेट करने से बाइनरी पैटर्न का पता चलता है:
बाइनरी प्रतिनिधित्व | दशमलव मान |
---|---|
000000000000000000000000000001 | 5 (4 + 1) |
00000000000000000000000000001101 | 13 (8 + 4 + 1) |
00000000000000000000000000101101 | 45 (32 + 8 + 4 + 1) |
जावास्क्रिप्ट बाइनरी नंबर दो के पूरक प्रारूप में संग्रहीत हैं।
इसका मतलब यह है कि एक ऋणात्मक संख्या बिटवाइज संख्या प्लस 1 की नहीं है:
बाइनरी प्रतिनिधित्व | दशमलव मान |
---|---|
000000000000000000000000000001 | 5 |
11111111111111111111111111111111 | -5 |
00000000000000000000000000000110 | 6 |
11111111111111111111111111111111010 | -6 |
00000000000000000000000000101000 | 40 |
111111111111111111111111111011000 | -40 |
दशमलव को बाइनरी में बदलना
उदाहरण
function dec2bin(dec){
return (dec >>> 0).toString(2);
}
बाइनरी को दशमलव में बदलना
उदाहरण
function bin2dec(bin){
return parseInt(bin, 2).toString(10);
}