जावा विनिर्देश shift operators इस प्रकार बताते हैं:
तो बाएं हाथ संकार्य के पदोन्नत प्रकार int
, केवल पांच दायां संकार्य का सबसे कम क्रम बिट्स परिवर्तन के रूप में उपयोग किया जाता है दूरी। ऐसा लगता है जैसे दाएं हाथ के ऑपरेंड को मास्क वैल्यू 0x1f
के साथ थोड़ा सा तार्किक और ऑपरेटर &
(§15.22.1) के अधीन किया गया था। वास्तव में उपयोग की जाने वाली शिफ्ट दूरी हमेशा 0 से 31 तक की सीमा में होती है।
32 & 0x1f
का मान शून्य है।
बाईं संकार्य long
है, तो आप सही संकार्य के लिए एक अतिरिक्त बिट पाने के लिए, के बजाय 63 ऊपरी सीमा का विस्तार 31.
आदेश स्थानांतरण से किसी भी विशिष्ट उम्मीद मूल्य पाने के लिए - दाईं ओर 1, आपको पूर्णांक के अंतर्निहित बाइनरी प्रतिनिधित्व (उदाहरण के लिए, दो पूरक) के साथ-साथ बिट्स की संख्या (उदाहरण के लिए, 32) निर्दिष्ट करने की आवश्यकता है। प्रत्येक प्रोग्रामिंग भाषा उनको अलग-अलग परिभाषित कर सकती है, लेकिन कार्यान्वयन के लिए चीजों को सरल रखने के हित में, वे आमतौर पर निर्दिष्ट करेंगे कि उपलब्ध बिट्स की संख्या से अधिक स्थानांतरित होने की अनुमति नहीं है। ऐसा अक्सर होता है क्योंकि अंतर्निहित CPU हार्डवेयर इसका समर्थन नहीं करता है, या तो। आखिरकार, यदि आप उन कई बिट्स को स्थानांतरित करना चाहते हैं, तो बाएं ऑपरेंड अब महत्वपूर्ण नहीं है क्योंकि नतीजा हमेशा एक जैसा होगा।
स्रोत
2011-01-27 08:05:01
यह जावा जैसा दिखता है। मैं कई भाषाओं के बारे में नहीं जानता जो'>> 'ऑपरेटर को परिभाषित करते हैं। – leppie
मैं इस पर आया, जबकि मैं जावा की मूल बातें सीखने की कोशिश कर रहा था, हां, लेकिन मैंने इसे टैग नहीं किया क्योंकि मुझे लगता है कि थोड़ी सी स्थानांतरण एक सामान्य सामान्य अवधारणा थी। – user183037
जांचें: http://stackoverflow.com/questions/3170412/why-is-132-1 –