Bitwise Operators in JavaScript – Bitwise Operators ऐसे Operators होते हैं, जो मूल रूप से Numeric Values के Bits पर काम करते हैं। ECMAScript में सभी Numbers को 64-Bit के रूप में Store किया जाता है लेकिन Bitwise Operations Directly 64-bit पर काम नहीं कर सकते।
इसलिए सामान्यत: Bitwise Operators Values को दो 32-Bit Integer में Convent करते हैं और Operation Perform करने के बाद फिर से Numbers को 64-Bit Representation में Convert कर देते हैं।
एक Developer के नजरि, से देखें तो एक Developer को वास्तव में 32-bit Integer के साथ ही काम करना होता है जबकि 64-bit Conversion Automatically Internally होता है, जिसके बारे में Developer को सोंचने की जरूरत नहीं रहती है।
32-Bit Integers में 31 Bits Numeric Value को Represent करते हैं जबकि बचा हुआ 1 Bit, Numerical Value के Sign को Represent करता है। यदि इस Bit का मान 0 हो तो संख्या Positive होती है और 1 होने की स्थिति में संख्या Negative होती है।
Positive Numbers True Binary Format में Store होते हैं, जहां हर Bit 2 की घात को Represent करता है। यानी First Bit की Value 20 होता है जबकि 31st Bit का Value 230 होता है। इस प्रक्रिया को हम निम्नानुसार समझ सकते हैं:
उपरोक्त चित्र में हमने Binary Value 10010 की Decimal Value को Calculate किया है, जिसमें Left Most Bit का मान 0 होने की वजह से Left Bit का मान 20X0 = 0 है। फिर दूसरी Bit का 1 होने की वजह से 21X1 = 2 है। तीसरी व चौथी Bit का मान 0 होने से दोनों का मान 0 है जबकि पांचवी Bit यानी Right Most Bit का मान 1 होने की वजह से 24X1 = 16 है।
अन्त में सभी Bits के मानों को जोड देने पर हमें 18 मिलता है जो कि 10010 Binary Number का Equivalent Decimal मान है। Binary Numbers को इसी तरह से Decimal Number में Convert किया जाता है और Computer भी Internally इसी तरीके को Follow करता है।
Negative Numbers भी इसी तरह से Binary Format में ही Store होते हैं। लेकिन वे जिस Format में Store होते हैं, उसे 2s Complement कहा जाता है। 2s Complement को निम्न तीन Steps द्वारा Calculate किया जाता है:
- सबसे पहले Absolute Value की Binary Representation को Determine किया जाता है। उदाहरण के लिए यदि हमें -18 की Binary Calculate करनी है, तो सबसे पहले हमें 18 की Binary पता होनी चाहिए।
- फिर हमें 1s Complement Calculate करना होता है। यानी Binary Digits के हर 0 के स्थान पर 1 व 1 के स्थान पर 0 को Replace करना होता है।
- प्राप्त होने वाली Binary में 1 Add करना होता है।
उपरोक्त तीनों Steps को Follow करके हमें -18 के Binary Representation को निम्नानुसार Calculate कर सकते हैं:
सबसे पहले 18 का Binary Representation देखते हैं जो कि निम्नानुसार होता है:
0000 0000 0000 0000 0000 0000 0001 0010
अब हम सभी 0 के स्थान पर 1 व 1 के स्थान पर 0 Replace करते हैं, जिससे ये Binary निम्नानुसार Change हो जाती है:
1111 1111 1111 1111 1111 1111 1110 1101
अब हम इस Binary में 1 जोडते हैं, जिससे हमारी Binary निम्नानुसार हो जाती है:
प्राप्त होने वाली ये Binary वास्तव में -18 की Binary है। जब ECMAScript किसी संख्या को Binary में Convert करता है, तब हमें इन सब Calculations को जानने की जरूरत नहीं होती है, क्योंकि ECMAScript स्वयं ये Calculations कर लेता है और हमें किसी संख्या का Negative Version Provide कर देता है।
जब हम किसी Binary Number का Negative Representation प्राप्त करना चाहते हैं, तब ECMAScript हमें हमारी Value का Absolute Value के साथ निम्नानुसार Binary Representation देता है:
var num = -18
alert(num.toString(2)); //Output: -10010
जब -18 Binary String Value में Convert होता है, तब -10010 Result प्राप्त होता है। ये Conversion Process 2s Complement Process द्वारा Interpret होता है और हमें ज्यादा आसान तरीके से दिखाई देता है लेकिन Internally ये Conversion उपरोक्त तीनों Rules को Follow करते हुए ही किसी Negative संख्या का Binary Representation Generate करता है।
By Default ECMAScript में सभी Integers Signed होते हैं। फिर भी कुछ ऐसी स्थितियां होती हैं, जहां हमें Signed Number की नहीं बल्कि Unsigned Number की जरूरत होती है।
उदाहरण के लिए किसी व्यक्ति की Age को Signed Variable में Store करने का कोई औचित्य नहीं है क्योंकि किसी व्यक्ति की उम्र कभी भी Negative नहीं हो सकती।
इस प्रकार के Unsigned Number को Represent करते समय 31st BitSign के लिए Use न होकर Value के लिए Use होता है। फलस्वरूप Value की Range दुगुनी हो जाती है।
जैसाकि हमने पहले भी कहा कि ECMAScript में हर Integer 64 Bit होता है लेकिन दो 32 Bit Integers की तरह Treat होता है। इस स्थिति में NaN व Infinity इन दोनों मानों को ECMAScript इस प्रकार के Bitwise Operations व Conversion की स्थिति में 0 की तरह ही Treat करता है न कि Special Number की तरह।
यदि हम Bitwise Operator को किसी Non-Numeric Value के साथ Use करते हैं, तो सबसे पहले वह Value Number() Function का प्रयोग करके एक Valid Numeric Value में Convert होता है उसके बाद उस Number पर Bitwise Operation Perform होता है और Final रूप से हमें जो Number मिलता है, वह भी एक Number होता है।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Advance JavaScript in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
Advance JavaScript in Hindi | Page: 669 | Format: PDF