objective c - Bitwise और ऑपरेटर को समझना




objective-c operators (3)

मैं कोचन की पुस्तक "ऑब्जेक्टिव-सी में प्रोग्रामिंग" में उद्देश्य-सी में बिट ऑपरेटर के बारे में पढ़ रहा हूं।

मैं इस भाग के बारे में बहुत उलझन में हूं, हालांकि मुझे अब तक जो कुछ भी प्रस्तुत किया गया है, उसे मैंने वास्तव में समझा है।

पुस्तक से उद्धरण यहां दिया गया है:

बिटवाई और ऑपरेटर

माइटिंग ऑपरेशंस के लिए अक्सर बिटिंग एंडिंग का उपयोग किया जाता है। यही है, इस ऑपरेटर को डेटा आइटम के विशिष्ट बिट्स को 0 पर सेट करने के लिए आसानी से उपयोग किया जा सकता है। उदाहरण के लिए, कथन

w3 = w1 & 3;

W3 bitwise के मान को w3 को स्थिर 3 के साथ निर्दिष्ट करता है। इसमें डब्ल्यू में सभी बिट्स को सेट करने का वही प्रभाव होता है, जो कि लगभग दो बिट्स 0 के अलावा और w1 से दाएं दो बिट्स को संरक्षित करता है।

सी में सभी बाइनरी अंकगणितीय ऑपरेटरों के साथ, द्विआधारी बिट ऑपरेटर को बराबर चिह्न जोड़कर असाइनमेंट ऑपरेटर के रूप में भी उपयोग किया जा सकता है। बयान

word &= 15;

इसलिए निम्न कार्य को निम्न कार्य करता है:

word = word & 15;

इसके अतिरिक्त, इसका मतलब है कि शब्द के दाएं चार बिट्स को 0 पर सेट करने का प्रभाव है। बिटटाइज ऑपरेशंस करने में स्थिरांक का उपयोग करते समय, आमतौर पर ओक्टल या हेक्साडेसिमल नोटेशन में स्थिरांक को व्यक्त करना अधिक सुविधाजनक होता है।

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

जब पुस्तक "सभी बिट्स को सेट करने" का संदर्भ देती है, तो सभी बिट्स .. वास्तव में थोड़ा सा क्या है। क्या यह दूसरे आधार पर सिर्फ 0 या 1 नहीं है, दूसरे शब्दों में, बाइनरी?

यदि हां, तो क्यों, पहले उदाहरण में, "सही 2" से 0 को छोड़कर सभी बिट्स हैं? क्या यह 2 है क्योंकि यह 3 - 1 है, जो हमारे निरंतर से 3 ले रहा है?

धन्यवाद!


"बिट" "द्विआधारी अंक" के लिए छोटा है। और हाँ, यह 0 या 1 है। बाइट में लगभग हमेशा 8 होते हैं, और वे लिखते हैं जैसे कि दशमलव संख्याएं हैं - बाईं ओर सबसे महत्वपूर्ण अंक के साथ, और दाईं ओर कम से कम महत्वपूर्ण।

आपके उदाहरण में, w1 & 3 मास्क सबकुछ लेकिन कम से कम महत्वपूर्ण (दाएं) अंक हैं क्योंकि 3, बाइनरी में 00000011 है। (2 + 1) और ऑपरेशन 0 देता है यदि थोड़ा सा एंडेड 0 है, तो आखिरी सब कुछ दो बिट स्वचालित रूप से 0 हैं।


@cHao और सब: नहीं! बिट्स संख्या नहीं हैं। वे शून्य या एक नहीं हैं!

खैर, 0 और 1 संभव और वैध व्याख्याएं हैं। शून्य और एक सामान्य व्याख्या है।

लेकिन थोड़ा सा केवल एक चीज है, जो एक साधारण विकल्प का प्रतिनिधित्व करती है। यह कहता है "यह है" या "यह नहीं है"। यह चीज़, "इसे", स्वयं के बारे में कुछ भी नहीं कहता है। यह नहीं बताता, यह क्या बात है।

ज्यादातर मामलों में यह आपको परेशान नहीं करेगा। आप उन्हें संख्याओं (या संख्याओं के अंक, अंकों, संख्याओं) के रूप में ले सकते हैं (या प्रोग्रामिंग भाषाओं, सीपीयू और अन्य हार्डवेयर का संयोजन, जिसे आप "ठेठ" के रूप में जानते हैं) usaly do - और शायद आपको कभी भी परेशानी नहीं होगी उन्हें।

लेकिन अगर आप "0" और "1" के अर्थ को स्विच करते हैं तो कोई मूल समस्या नहीं है। ठीक है, प्रोग्रामिंग असेंबलर के दौरान ऐसा करने पर, आपको थोड़ा समस्याग्रस्त लगेगा क्योंकि कुछ निमोनिक्स अन्य तर्क करेंगे, फिर वे आपको उनके नाम बताएंगे, संख्याओं को अस्वीकार कर दिया जाएगा और ऐसी चीजें।

यदि आप चाहें तो http://webdocs.cs.ualberta.ca/~amaral/courses/329/webslides/Topic2-DeMorganLaws/sld017.htm पर एक नज़र डालें।

अस्सलाम वालेकुम


w1 =    ????...??ab
3  =    0000...0011
--------------------
&  =    0000...00ab

0 और कुछ भी एन = 0

1 और किसी भी बिट एन = एन

तो, पिछले तीन सेट को छोड़कर 0 के साथ कुछ भी bitwise और 3 के साथ अपने सभी बिट्स है। इस मामले में पिछले दो बिट्स, ए और बी संरक्षित हैं।





bitwise-operators