बस मार्क के जवाब पर विस्तार करने के लिए एक छोटे से (मार्क, तुम्हारा में यह शामिल करने के लिए स्वतंत्र लग रहा है और मैं इस सवाल का जवाब हटा देंगे) इस कल्पना की धारा 7.8 में निर्दिष्ट किया जाता:
पूर्वनिर्धारित शिफ्ट ऑपरेटर नीचे सूचीबद्ध हैं।
शिफ्ट छोड़ दिया:
- पूर्णांक ऑपरेटर < < (int x, पूर्णांक गिनती);
- यूंट ऑपरेटर < < (uint x, int count);
- लंबे ऑपरेटर < < (लंबी x, int count);
- उलंग ऑपरेटर < < (उलंग x, int count);
< < ऑपरेटर नीचे वर्णित गणना की गई कई बिट्स द्वारा एक्स को छोड़ दिया गया है।
एक्स के परिणाम प्रकार की सीमा के बाहर उच्च-आदेश बिट्स को त्याग दिया जाता है, शेष बिट्स को बायीं ओर स्थानांतरित कर दिया जाता है, और निम्न-आदेश खाली बिट स्थिति शून्य पर सेट होती है।
शिफ्ट सही:
- पूर्णांक ऑपरेटर >> (int x, पूर्णांक गिनती);
- यूंट ऑपरेटर >> (uint x, int count);
- लंबे ऑपरेटर >> (लंबी एक्स, int गिनती);
- उलंग ऑपरेटर >> (उल x, int count);
>> ऑपरेटर नीचे वर्णित गणना की गई कई बिट्स द्वारा एक्स को सीधे स्थानांतरित करता है।
जब x int int या long टाइप होता है, तो एक्स के निम्न-क्रम बिट्स को त्याग दिया जाता है, शेष बिट्स को सही स्थानांतरित किया जाता है, और उच्च-आदेश खाली बिट स्थिति शून्य पर सेट होती है यदि एक्स गैर-ऋणात्मक और सेट है यदि x नकारात्मक है तो एक के लिए।
जब एक्स यूंट या उलंग प्रकार का होता है, एक्स के निम्न-आदेश बिट्स को त्याग दिया जाता है, शेष बिट्स को सही स्थानांतरित किया जाता है, और उच्च-आदेश खाली बिट स्थिति शून्य पर सेट होती है।
जब एक्स के प्रकार int या uint है, पाली गिनती कम आदेश गिनती के पांच बिट्स द्वारा दिया जाता है:
पूर्वनिर्धारित ऑपरेटरों के लिए, बिट्स शिफ्ट करने के लिए की संख्या की गणना इस प्रकार है। दूसरे शब्दों में, शिफ्ट गणना गणना & 0x1F से गणना की जाती है।
जब x का प्रकार लंबा या उलटा होता है, तो शिफ्ट गणना कम क्रम के छह बिट्स गिनती द्वारा दी जाती है। दूसरे शब्दों में, शिफ्ट गणना गणना & 0x3F से गणना की जाती है।
यदि परिणामस्वरूप शिफ्ट गणना शून्य है, तो शिफ्ट ऑपरेटर बस x का मान वापस कर देते हैं। नौसिखिया प्रोग्रामर के लिए
हाय, क्या मैं आपको इसे और अधिक समझाने के लिए कह सकता हूं? पहले में मेरे पास 0x200000000 क्यों है और दूसरे में मेरे पास 16000 क्यों है? आपको बहुत धन्यवाद –
यह कहने जैसा है "1 * 50000 1000 * 8 से अलग क्यों है" - क्योंकि आप बहुत अलग चीजें कर रहे हैं। पहला 2^33 ("पावर ऑफ") है, दूसरा 1000 * 16 है। –
मैं 2^33 और 1000 के बीच के अंतर को समझने ठीक * 16 मैं जानना चाहता है कि 2^32 –