2013-07-14 6 views
5

मैं लगभग एक साल तक जावा के साथ प्रोग्राम करता हूं, लेकिन फिर भी मुझे कुछ पता नहीं चला। कैसे करता है:जावा | पूर्णांक के साथ ऑपरेटर;

new Font(FontFamily.TIMES_ROMAN, 12, 1 | 4); 

कैसे | पूर्णांक के साथ काम करता है?

धन्यवाद

पीएस मैं बहुत गुस्से में था।

+4

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html –

+0

1 एक संपत्ति होना चाहिए और 4 एक और संपत्ति होनी चाहिए ताकि दोनों का उपयोग किया जा सके। –

+0

@ हुसेइंटुगुलबुयूयूसिकिस ओपी जानना चाहता है कि वास्तव में '|' दो गुणों को कैसे जोड़ता है। – MathSquared

उत्तर

7

यह थोड़ा सा OR ऑपरेटर है, अपने व्यक्तिगत बिट्स के स्तर पर एक या अधिक बिट पैटर्न या बाइनरी अंकों पर काम करता है।

बिटवाई^ऑपरेटर थोड़ा सा अनन्य या ऑपरेशन करता है।

या यदि कोई ऑपरेंड 1 है और शून्य केवल तभी होगा जब दोनों ऑपरेटरों शून्य हैं।

आप JLS 15.22.1 में पूरा विवरण प्राप्त कर सकते हैं।

0|0 = 0 
0|1 = 1 
1|0 = 1 
1|1 = 1 

इसलिए आपके मामले में, ऑपरेंड 1 और 4 हैं। उन्हें बाइनरी में परिवर्तित करना (केवल अंतिम 4 अंक) क्रमश: 0100 और 0001 होगा। थोड़ा करके | लागू करें अब बिट:

0 1 0 0 
0 0 0 1 
--------- 
0 1 0 1 = (5 in base 10) 
11

| ऑपरेटर की गणना करता है इसकी ऑपरेंड के "bit-wise OR"। इसे समझने के लिए आपको ऑपरेटरों को द्विआधारी में परिवर्तित करना होगा: यदि बिट किसी भी संख्या में सेट नहीं होता है, तो यह "0" बिट उत्पन्न करता है, और यदि यह किसी भी सेट में सेट होता है तो "1" बिट होता है।

अपने नंबरों के साथ, 4|1 का परिणाम है 5 क्योंकि:

4 = 100 
    1 = 001 
4|1 = 101 = 5 

बिट के लिहाज से OR ऑपरेटर से संबंधित है "बिट के लिहाज से और" ऑपरेटर & है, जो एक "0" अगर पैदा करता है बिट संख्याओं में से एक में सेट नहीं किया गया है और यदि यह दोनों में सेट किया गया है तो "1" बिट।

चूंकि ये ऑपरेटर अपने तर्कों के बिट-वार प्रतिनिधित्व पर काम करते हैं, इसलिए जब आप दशमलव (आधार 10) संख्याओं पर काम करने के लिए उपयोग करते हैं तो उन्हें समझना मुश्किल हो सकता है। निम्नलिखित संबंध रखती है, जो यह आसान एक का परिणाम प्राप्त करने के लिए जब आप अन्य बनाता है:

a + b = (a|b) + (a&b) 
+1

नोट: ये यदि आप बाइनरी, ऑक्टल, या हेक्स स्थिरांक का उपयोग करते हैं तो इंसानों को समझने के लिए ऑपरेटर बहुत आसान होते हैं। जैसे 0xF124 | 0x0228 = 0xF32C। – user949300

+0

@ user949300 मैं स्थिरांक को '1 << 0', '1 << 1' आदि के रूप में परिभाषित करता हूं। आप गणित नहीं कर रहे हैं, आप बिट्स की तुलना में किसी और चीज का उपयोग करके बिट्स को" बिट सरणी "में फिसल रहे हैं अनावश्यक संज्ञानात्मक उपरि की तरह। – millimoose

1

| बिटवाइज़ कहा जाता है या कर रहा है।यह द्वारा काम करता है:

  1. एक मिलान स्थिति में प्रत्येक अंक पर द्विआधारी
  2. कर बूलियन या (||) के लिए प्रत्येक संख्या परिवर्तित (0 गलत है, 1 सच है)
  3. परिणाम परिवर्तित वापस
  4. दशमलव में

उदाहरण के लिए,

100 | 4 
OR 001 | 1 
-------+-- 
    101 | 5 

पर गुणकन्स्ट्रक्टर को बाइनरी में डिज़ाइन किया गया है, बिल्कुल एक अंक 1 है। इन नंबरों को ऑर करके, आपको अंक मिलते हैं जो ऑर्ड वाले विकल्पों का प्रतिनिधित्व करते हैं।

संबंधित मुद्दे