2011-01-21 18 views
26

मैं समझता हूं कि एकल एम्पर्सेंड ऑपरेटर आमतौर पर 'बिटवाई और' ऑपरेशन के लिए उपयोग किया जाता है। हालांकि, क्या आप किसी भी संख्या के बीच तुलना के लिए इसका उपयोग करते समय प्राप्त होने वाले दिलचस्प परिणामों की व्याख्या करने में सहायता कर सकते हैं?पूर्णांक पर एक एकल एम्पर्सेंड ऑपरेटर (&) के व्यवहार को समझना

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

(6 & 2) = 2 
(10 & 5) = 0 
(20 & 25) = 16 
(123 & 20) = 16 

इन परिणामों के बीच कोई तार्किक लिंक नहीं लगता है - क्या मुझे कुछ याद आ रही है? ऑनलाइन दस्तावेज केवल बूलियन या एकल बिट्स की तुलना को संदर्भित करता है।

+1

क्या आप निश्चित हैं (20 और 25) == 4? – Nick

+1

@ निक मुझे मिल गया। –

+1

जो आप देख रहे हैं * है * एक "bitwise और" ऑपरेशन का परिणाम है। ('(20 और 25) = 4' बिट के अलावा, जो मुझे लगता है कि एक टाइपो है।) – LukeH

उत्तर

46

है उनमें से प्रत्येक के बाइनरी प्रस्तुतियों की तुलना करें।

110 &  010 =  010 
    1010 & 0101 = 0000 
    10100 & 11001 = 10000 
1111011 & 0010100 = 0010000 

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

+0

+1: वाह, इतने कम समय में सभी ऑपरेशन! – Rekin

+6

@ रेकिन: इस तरह की छोटी संख्याओं के लिए मैं अपने सिर में दशमलव, हेक्स और बाइनरी के बीच परिवर्तित कर सकता हूं। मुझे एएससीआईआईआई तालिका में से अधिकांश को टक करने के लिए एक कोने भी मिला। –

+1

@ जेफ्रे, जिज्ञासा से बाहर - क्या आप कुछ निम्न स्तर के वातावरण में काम करते हैं? जैसे, कहते हैं, प्रोटोकॉल, संदेश या प्रदर्शन संबंधित सॉफ्टवेयर? – Rekin

6

आप द्विआधारी प्रतिनिधित्व करने के लिए अपने नंबर बदलने की आवश्यकता है और फिर आप की तरह 6 & 2 = 2 वास्तव में 110 & 010 = 010 आदि 5 परिणाम के बीच लिंक दिखाई देगा 1010 & 0101 = 0000

4

द्विआधारी और ऑपरेशन बाइनरी में प्रतिनिधित्व पूर्णांक पर किया जाता है। उदाहरण

110 (6) 
010 (2) 
-------- 
010 (2) 
2
6  = 0110 
2  = 0010 
6 & 2 = 0010 

20  = 10100 
25  = 11001 
20 & 25 = 10000 

के लिए (लगता है कि आप गणना इस एक के लिए गलत है)

आदि ...

2

आंतरिक रूप से, पूर्णांकों binary format में संग्रहीत हैं। मैं दृढ़ता से सुझाव देता हूं कि आप इसके बारे में पढ़ लें। संख्याओं के bitwise प्रतिनिधित्व के बारे में जानना बहुत महत्वपूर्ण है।

कहा जा रहा है, बिटवाइज़ तुलना तुलना मानकों के टुकड़े:

Decimal: 6 & 2 = 2 
Binary: 0110 & 0010 = 0010 
0

Bitwize और एक एक करके द्विआधारी संकेतन में बिट्स से मेल खाता है और नतीजा बिट्स कि दो संख्याओं के बीच COMON कर रहे हैं।

संख्या को बाइनरी में बदलने के लिए आपको बाइनरी सिस्टम को समझने की आवश्यकता है।

उदाहरण 6 = 110 द्विआधारी के लिए

110 1x4 + 1X2 + 0x1 का प्रतिनिधित्व करता है = 6.

2 तब 0x4 + 1X2 + 0x1 = 2.

Bitwize है और केवल बरकरार रखती है पदों जहां दोनों संख्याओं की स्थिति निर्धारित होती है, इस मामले में 2 के लिए बिट और परिणाम तब होता है 2.

प्रत्येक अतिरिक्त बिट अंतिम दोगुनी है इसलिए 4 बिट संख्या गुणक 8, 4, 2, 1 का उपयोग करती है और टी कर सकते हैं यहां 0 से 15 (गुणक की राशि) से सभी संख्याओं का प्रतिनिधित्व करें।

2

बिटवाई और यह बिल्कुल ठीक है: यह बिट्स पर एक और संचालन करता है।

तो परिणाम की उम्मीद करने के लिए आपको बिट्स को देखने की आवश्यकता है, न कि संख्याएं।

और आप 1 देता है, तभी एक ही स्थिति में दोनों संख्या में 1 है:

6(110) & 2(010) = 2(010) 
10(1010) & 5(0101) = 0(0000) 

एक बिटवाइज़ या अगर कोई एक ही स्थिति में या तो संख्या में 1 है आप 1 दे देंगे:

6(110) | 2(010) = 6(110) 
10(1010) | 5(0101) = 15(1111) 
संबंधित मुद्दे