2010-12-26 12 views
8
  • x <<= y (x = x << y)
  • x >>= y (x = x >> y)
  • x >>>= y (x = x >>> y)
  • x &= y (x = x & y)
  • x ^= y (x = x^y)
  • x |= y (x = x | y)

इन विभिन्न ऑपरेटरों क्या करते हैं?ये जावास्क्रिप्ट बिटवाई ऑपरेटर क्या करते हैं?

+0

इसके अलावा पर एक नजर है [ बिटवाई ऑपरेटर क्या हैं?] (Http://stackoverflow.com/q/276706/1048572) – Bergi

उत्तर

13
<<, >> 

Bit shift छोड़ दिया और सही, क्रमशः। यदि आप बिट्स के बाइनरी अनुक्रम के रूप में बाएं ऑपरेंड की कल्पना करते हैं, तो आप स्थानांतरित कर रहे हैं जो सही ऑपरेंड द्वारा इंगित बिट्स की संख्या से बाएं या दाएं हैं।

&, ^, | 

ये और बिटवाइज़ कर रहे हैं, XOR, और या, क्रमशः। आप & और | के समकक्ष के रूप में && और || के बारे में सोच सकते हैं, सिवाय इसके कि वे अपने ऑपरेटरों को थोड़ा वैक्टर के रूप में मानेंगे, और प्रत्येक बिट्स पर तार्किक संचालन करेंगे। ^^ ऑपरेटर नहीं है, लेकिन यह ऑपरेशन "xor" या "exclusive or" है। आप "ए एक्स बी" के बारे में सोच सकते हैं "ए या बी, लेकिन दोनों नहीं"।

+0

शिफ्ट ऑपरेटरों के अलावा, पूर्णता के लिए, ये चीजें भी बूलियन के साथ काम करती हैं (जहां वे थोड़ा सा हो सकते हैं या नहीं - वे विजुअल बेसिक में हैं, लेकिन जावा में, speac द्वारा नहीं, AFAIK।) '&' और '|' 'और' '' '' से अलग हैं, जिसमें दोनों ऑपरेटरों का हमेशा मूल्यांकन किया जाता है, जबकि '&&'/'|| 'संस्करण, दूसरा ऑपरेंड का मूल्यांकन नहीं किया जाता है अगर यह अभिव्यक्ति के मूल्य को बदल नहीं सकता है पहले ऑपरेंड का मूल्यांकन किया गया था। –

2

यहां शुरुआती लोगों के लिए चीजों को सरल बनाने का प्रयास है।

किसी और चीज की

आप द्विआधारी संख्या प्रणाली (दो अंक से बना नंबर) से परिचित होना चाहिए। यदि आप नहीं हैं तो पहले इस लिंक को देखें: https://www.mathsisfun.com/binary-number-system.html। बस पिछले लिंक तोड़ने के मामले में, यह उत्तर थोड़ा मदद कर सकता है: https://stackoverflow.com/a/32155850/1636522

वास्तव में, यह पता लगाने के लिए कि इन ऑपरेटरों कैसे काम करते हैं, आपको यह पता होना चाहिए कि ऑपरेशन में शामिल संख्याओं के पीछे कौन सा बिट अनुक्रम है। उसके बाद आप निम्नलिखित सामग्री को समझने में सक्षम होना चाहिए।

अनुस्मारक

दशमलव अंक और उनके बाइनरी अंकन:

0 0 | 5 101 
1 1 | 6 110 
2 10 | 7 111 
3 11 | 8 1000 
4 100 | 9 1001 

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

ये ऑपरेटर बाएं या दाएं को थोड़ा अनुक्रम स्थानांतरित करते हैं।

decimal | binary  decimal | binary 
---------|--------- ---------|--------- 
     9 | 1001   2 |  10 
    >> 2 | >> 2  << 2 | << 2 
    = 2 | = 10   = 8 | = 1000 

&, | और ^ क्या करते हैं?

ये ऑपरेटर एक नई संख्या बनाने के लिए दो संख्याओं के बिट्स को जोड़ते हैं।

decimal | binary  decimal | binary  decimal | binary 
---------|-------- ---------|-------- ---------|-------- 
     5 | 101   5 | 101   5 | 101 
    & 6 | & 110   | 6 | | 110  ^6 |^110 
    = 4 | = 100   = 7 | = 111   = 3 | = 011 

कैसे & काम करता है?

बिट्स की प्रत्येक जोड़ी के लिए: यदि दो बिट्स की कम से कम एक 0 है, जिसके परिणामस्वरूप बिट 0. है दो टुकड़े में से कोई भी 0 है, जिसके परिणामस्वरूप सा है 1.

101 bit 3 | bit 2 | bit 1 
& 110 -------|-------|------- 
= 100  1 | 0 | 1 
      & | & | & 
      1 | 1 | 0 
      = | = | = 
      1 | 0 | 0 

| कैसे काम करता है?

बिट्स की प्रत्येक जोड़ी के लिए: यदि दो बिट्स की कम से कम एक 1 है, जिसके परिणामस्वरूप बिट 1. है दो टुकड़े में से कोई भी 1 है, जिसके परिणामस्वरूप बिट 0.

101 bit 3 | bit 2 | bit 1 
| 110 -------|-------|------- 
= 111  1 | 0 | 1 
      | | | | | 
      1 | 1 | 0 
      = | = | = 
      1 | 1 | 1 

है ^ कैसे काम करता है?

बिट्स की प्रत्येक जोड़ी के लिए: दो बिट्स भिन्न हैं, तो जिसके परिणामस्वरूप बिट 1. है दो टुकड़े एक ही कर रहे हैं, जिसके परिणामस्वरूप सा है 0.

101 bit 3 | bit 2 | bit 1 
^ 110 -------|-------|------- 
= 011  1 | 0 | 1 
     ^ | ^ | ^
      1 | 1 | 0 
      = | = | = 
      0 | 1 | 1 
संबंधित मुद्दे