जावा में ^ ऑपरेटर क्या करता है?


294

^जावा में सेवा (कार्यवाहक) ऑपरेटर क्या कार्य करता है ?

जब मैं यह कोशिश करता हूं:

int a = 5^n;

...यह मुझे देता है:

n = 5 के लिए, रिटर्न 0 के
लिए n = 4, रिटर्न 1 के
लिए n = 6, रिटर्न 3 के लिए

... तो मुझे लगता है कि यह प्रदर्शन नहीं करता है। लेकिन फिर क्या है?


5
क्या आप उस वास्तविक कोड को पोस्ट कर सकते हैं जिसका आप उपयोग कर रहे हैं?
एंथनी फोर्लोनी

मैं ग्रहण का उपयोग कर रहा हूं और यह 11. सार्वजनिक वर्ग SimpleParser {सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) {System.out.println ((10 ^ 1)); }}

2
जावा में, ^ऑपरेटर बिजली सेट के लिए नहीं है। आपको Math.powइसके बजाय की आवश्यकता होगी । पॉलीजेनबेलिकेंट का उत्तर देखें।
एंथनी फोर्लोनी

@WizardOfOdds: सहमत, यह एक अच्छा सवाल है ( ^घातांक के लिए? यह सिर्फ सामान्य ज्ञान है!)। ओपी की जावा भाषा के अन्वेषण को प्रोत्साहित करने की आवश्यकता है।
पॉलीजेन लुब्रीकेंट

जवाबों:


419

जावा में ^ ऑपरेटर

^ जावा में एक्सक्लूसिव या ("xor") ऑपरेटर है।

5^6उदाहरण के रूप में लेते हैं :

(decimal)    (binary)
     5     =  101
     6     =  110
------------------ xor
     3     =  011

बिटवाइज़ ( JLS 15.22.1 ) और तार्किक ( JLS 15.22.2 ) के लिए सत्य तालिका :

^ | 0 1      ^ | F T
--+-----     --+-----
0 | 0 1      F | F T
1 | 1 0      T | T F

अधिक सरल रूप से, आप एक्सोर को "यह या वह, लेकिन दोनों नहीं " के रूप में भी सोच सकते हैं ।

यह सभी देखें


जावा में घातांक

पूर्णांक घातांक के रूप में, दुर्भाग्य से जावा में ऐसा कोई ऑपरेटर नहीं है। आप double Math.pow(double, double)(परिणाम को कास्टिंग कर सकते हैं )int यदि आवश्यक तो )।

दो की कुछ शक्तियों की गणना करने के लिए आप पारंपरिक बिट-शिफ्टिंग ट्रिक का भी उपयोग कर सकते हैं। यही है, के (1L << k)लिए दो k kth शक्ति है k=0..63

यह सभी देखें


मर्ज नोट : यह उत्तर एक अन्य प्रश्न से मिलाया गया था, जहांएक प्रोग्रामिंग अभ्यास के रूप मेंउपयोग किए बिनास्ट्रिंग"8675309"कोपरिवर्तित करने के लिए प्रतिपादक का उपयोग करने का इरादा था(अब से घातांक को दर्शाता है)। ओपी का इरादा गणना करना था; इस उत्तर के अगले भाग से पता चलता है कि इस कार्य के लिए प्रतिपादक आवश्यक नहीं है।intInteger.parseInt^8*10^6 + 6*10^5 + 7*10^4 + 5*10^3 + 3*10^2 + 0*10^1 + 9*10^0 = 8675309

हॉर्नर की योजना

अपनी विशिष्ट आवश्यकता को संबोधित करते हुए , आपको वास्तव में 10. की विभिन्न शक्तियों की गणना करने की आवश्यकता नहीं है। आप हॉर्नर की योजना को क्या कह सकते हैं , जो न केवल सरल है बल्कि कुशल भी है।

चूंकि आप इसे एक व्यक्तिगत अभ्यास के रूप में कर रहे हैं, इसलिए मैं जावा कोड नहीं दूंगा, लेकिन यहां मुख्य विचार है:

8675309 = 8*10^6 + 6*10^5 + 7*10^4 + 5*10^3 + 3*10^2 + 0*10^1 + 9*10^0
        = (((((8*10 + 6)*10 + 7)*10 + 5)*10 + 3)*10 + 0)*10 + 9

यह पहली बार में जटिल लग सकता है, लेकिन यह वास्तव में नहीं है। आपने मूल रूप से बाएं से दाएं अंकों को पढ़ा है, और आप अगले अंक को जोड़ने से पहले अपने परिणाम को 10 से गुणा करते हैं।

तालिका के रूप में:

step   result  digit  result*10+digit
   1   init=0      8                8
   2        8      6               86
   3       86      7              867
   4      867      5             8675
   5     8675      3            86753
   6    86753      0           867530
   7   867530      9          8675309=final

16
इस उत्तर को जोड़ने के लिए, जिस ओपी को देख रहे हैं, वह शायद Math.pow (10, 1)
tjohns20

146

जैसा कि कई लोग पहले ही बता चुके हैं, यह XOR ऑपरेटर है। बहुत से लोग पहले ही यह बता चुके हैं कि यदि आप प्रतिपादक चाहते हैं तो आपको Math.pow का उपयोग करना होगा

लेकिन मुझे लगता है कि यह भी ध्यान रखना उपयोगी है कि ^ऑपरेटरों का एक परिवार है जिसे सामूहिक रूप से बिटवाइज़ ऑपरेटर के रूप में जाना जाता है:

Operator    Name         Example     Result  Description
a & b       and          3 & 5       1       1 if both bits are 1.
a | b       or           3 | 5       7       1 if either bit is 1.
a ^ b       xor          3 ^ 5       6       1 if both bits are different.
~a          not          ~3          -4      Inverts the bits.
n << p      left shift   3 << 2      12      Shifts the bits of n left p positions. Zero bits are shifted into the low-order positions.
n >> p      right shift  5 >> 2      1       Shifts the bits of n right p positions. If n is a 2's complement signed number, the sign bit is shifted into the high-order positions.
n >>> p     right shift  -4 >>> 28   15      Shifts the bits of n right p positions. Zeros are shifted into the high-order positions.

से यहाँ

ये ऑपरेटर तब काम में आ सकते हैं जब आपको पूर्णांकों को पढ़ने और लिखने की आवश्यकता होती है, जहां व्यक्तिगत बिट्स को झंडे के रूप में व्याख्या की जानी चाहिए, या जब पूर्णांक में बिट्स की एक विशेष श्रेणी का एक विशेष अर्थ होता है और आप केवल उन्हीं को निकालना चाहते हैं। आप इन ऑपरेटरों का उपयोग करने की आवश्यकता के बिना हर दिन प्रोग्रामिंग का एक बहुत कुछ कर सकते हैं, लेकिन अगर आपको कभी भी बिट स्तर पर डेटा के साथ काम करना है, तो इन ऑपरेटरों का एक अच्छा ज्ञान अमूल्य है।


34

यह बिटवॉयर XOR है, जावा में एक्सपेंशनरी ऑपरेटर नहीं है, आपको Math.pow()इसके बजाय उपयोग करना होगा ।


20

XOR ऑपरेटर नियम =>

0 ^ 0 = 0
1 ^ 1 = 0
0 ^ 1 = 1
1 ^ 0 = 1

4, 5 और 6 का बाइनरी प्रतिनिधित्व:

4 = 1 0 0 
5 = 1 0 1
6 = 1 1 0

अब, 5 और 4 पर XOR ऑपरेशन करें:

     5 ^ 4 => 1  0  1   (5)
              1  0  0   (4)
            ----------
              0  0  1   => 1

इसी तरह,

5 ^ 5 => 1   0   1    (5)
         1   0   1    (5)
       ------------
         0   0   0   => (0)


5 ^ 6 => 1   0   1  (5)
         1   1   0  (6)
        -----------
         0   1   1  => 3


15

बहुत से लोग पहले से ही इस बारे में बता चुके हैं कि यह क्या है और इसका उपयोग कैसे किया जा सकता है, लेकिन स्पष्ट के अलावा आप इस ऑपरेटर का उपयोग बहुत सारी प्रोग्रामिंग चालें करने के लिए कर सकते हैं जैसे

  • बूलियन सरणी में सभी तत्वों का XORing आपको बताता है कि क्या सरणी में विषम तत्वों की संख्या है
  • यदि आपके पास सभी संख्याओं के साथ एक सरणी है जो एक को छोड़कर कई बार दोहराता है जो विषम संख्या को दोहराता है तो आप पा सकते हैं कि XOR सभी तत्वों द्वारा।
  • अस्थायी चर का उपयोग किए बिना मानों की अदला-बदली
  • 1 से n तक की रेंज में लापता संख्या का पता लगाना
  • नेटवर्क पर भेजे गए डेटा का मूल सत्यापन।

बहुत से ऐसे टोटके किए जा सकते हैं, जिनका उपयोग करने में थोड़ा बुद्धिमान ऑपरेटर, दिलचस्प विषय का पता लगा सकते हैं।


14

जैसा कि दूसरों ने कहा है, यह बिटवाइज़ XOR है। यदि आप किसी दी गई शक्ति को एक संख्या बढ़ाना चाहते हैं, तो उपयोग करें Math.pow(a , b), जहां aएक संख्या है और bशक्ति है।


13

XOR ऑपरेटर नियम

0 ^ 0 = 0
1 ^ 1 = 0
0 ^ 1 = 1
1 ^ 0 = 1

बिटवाइज़ ऑपरेटर बिट पर काम करता है और बिट-बाय-बिट ऑपरेशन करता है। मान लें कि एक = 60 और बी = 13; अब द्विआधारी प्रारूप में वे निम्नानुसार होंगे -

a = 0011 1100

b = 0000 1101



a^b ==> 0011 1100  (a)
        0000 1101  (b)
        -------------  XOR
        0011 0001  => 49

(a ^ b) will give 49 which is 0011 0001

8

आरा का लिंक अनन्य-या की परिभाषा को इंगित करता है, जो बताता है कि यह फ़ंक्शन दो बूलियन मानों के लिए कैसे काम करता है।

जानकारी का अनुपलब्ध टुकड़ा यह है कि यह दो पूर्णांक (या पूर्णांक-प्रकार मान) पर कैसे लागू होता है। बिटवाइज़ एक्सक्लूसिव-या दो संख्याओं में संबंधित बाइनरी अंकों के जोड़े पर लागू होता है, और परिणाम फिर से एक पूर्णांक परिणाम में इकट्ठे होते हैं।

अपने उदाहरण का उपयोग करने के लिए:

  • 5 का बाइनरी प्रतिनिधित्व 0101 है।
  • 4 का बाइनरी प्रतिनिधित्व 0100 है।

बिटवाइज़ XOR को परिभाषित करने का एक सरल तरीका यह है कि परिणाम में प्रत्येक स्थान पर 1 है जहाँ दो इनपुट संख्याएँ भिन्न होती हैं।

4 और 5 के साथ, अंतिम स्थान पर एकमात्र अंतर है; इसलिए

0101 ^ 0100 = 0001 (5 ^ 4 = 1)।




7

यह java में Bitwise xor ऑपरेटर है जिसके परिणामस्वरूप बिट के विभिन्न मूल्य के लिए 1 (अर्थात 1 ^ 0 = 1) और बिट के समान मूल्य के लिए 0 (यानी 0 ^ 0 = 0) जब एक संख्या बाइनरी रूप में लिखी जाती है।

पूर्व: -

अपने उदाहरण का उपयोग करने के लिए:

5 का बाइनरी प्रतिनिधित्व 0101 है। 4 का बाइनरी प्रतिनिधित्व 0100 है।

Bitwise XOR को परिभाषित करने का एक सरल तरीका यह है कि परिणाम में प्रत्येक स्थान पर 1 है जहां दो इनपुट संख्याएं भिन्न होती हैं।

0101 ^ 0100 = 0001 (5 ^ 4 = 1)।


6

ऐसा इसलिए है क्योंकि आप xor ऑपरेटर का उपयोग कर रहे हैं।

जावा में, या किसी अन्य भाषा के बारे में, ^ बिटव्यू एक्सर है, इसलिए,

10 ^ 1 = 11. बिटवाइज ऑपरेटरों के बारे में अधिक जानकारी

यह दिलचस्प है कि कैसे जावा और सी # में पावर ऑपरेटर नहीं है।


2

यह जावा में बिटवाइज़ एक्सोर ऑपरेटर है, जिसके परिणामस्वरूप 1 का मूल्य अलग होता है (अर्थात 1 ^ 0 = 1) और 0 एक ही मूल्य के लिए (यानी 0 ^ 0 = 0)।


2

^ द्विआधारी है (बेस -2 के रूप में) एक्सोर, एक्सपेक्टोरिएशन (जो कि जावा ऑपरेटर के रूप में उपलब्ध नहीं है)। घातांक के लिए, java.lang.Math.pow () देखें।


2

यह XOR ऑपरेटर है। इसका उपयोग संख्याओं पर बिट संचालन करने के लिए किया जाता है। इसका व्यवहार ऐसा है कि जब आप एक बिट पर एक्सोर ऑपरेशन करते हैं, तो 0 XOR 0/1 XOR 1 का परिणाम 0. होता है, लेकिन यदि बिट्स में से कोई भी भिन्न होता है, तो परिणाम 1 होता है। इसलिए जब आपने 5 ^ 3 किया तो आप इन संख्याओं को अपने द्विआधारी रूपों में 5, 6 देख सकते हैं और इस प्रकार अभिव्यक्ति बन जाती है (101) XOR (110) जो परिणाम (011) देता है जिसका दशमलव प्रतिनिधित्व 3 है।


0

पायथन जैसी अन्य भाषाओं में आप 10 ** 2 = 100 कर सकते हैं, इसे आज़माएं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.