2011-01-19 20 views
6
short BitwiseTest(short value) 
{ 
    short test1 = ((value >> 8) & 0xFF); 
    short test2 = unchecked((short)((value << 8) & 0xFF00)); 
    return (test1 | test2); 
} 

उपर्युक्त कोड एक (अक्षम) उदाहरण है जो सी # में एक छोटे (हस्ताक्षरित 16-बिट पूर्णांक) की अंतहीनता को स्वैप करता है।सी # बिटवाई ऑपरेशंस - एक इंट क्यों डाला गया?

हालांकि इसके बाद के संस्करण कोड संकलन नहीं होगा सी # परोक्ष निम्नलिखित लाइनों के दोनों पर एक पूर्णांक के लिए एक छोटी से कास्टिंग है क्योंकि:

पहला मामला:

short test1 = ((value >> 8) & 0xFF); 

दूसरा मामला:

return (test1 | test2); 

यह कलाकार क्यों हो रहा है? क्या मैं अपेक्षाकृत परिणाम को कम से कम वापस लाकर प्राप्त करूंगा? इस तरह:

short BitwiseTest2(short value) 
{ 
    short test1 = (short)((value >> 8) & 0xFF); 
    short test2 = unchecked((short)((value << 8) & 0xFF00)); 
    return ((short)(test1 | test2)); 
} 

यदि नहीं क्यों?

ध्यान दें कि मुझे समझ में आता है कि बाएं बिट-शिफ्ट करने पर सी # एक पूर्णांक के लिए छोटा क्यों होता है, इसलिए test2 चर का असाइनमेंट।

+0

मैं शायद मैं स्पष्टीकरण दें कि मैं जवाब मिल नहीं है चाहिए डुप्लीकेट के रूप में बंद करने के लिए वोट नहीं किया है, लेकिन यह काफी http://stackoverflow.com/questions/941584 –

+0

के समान है ले लो प्रासंगिक के बारे में मौजूदा प्रश्नों के लिए प्रासंगिक। अतिरिक्त के साथ ओवरफ्लो की संभावना है, जैसा कि test2 के असाइनमेंट के साथ है। मैं उन परिस्थितियों को समझता हूं। हालांकि दो स्थितियों में मैंने रेखांकित किया है कि अतिप्रवाह की कोई संभावना नहीं है। –

उत्तर

0

यह मूल रूप से एरिक लिपर्ट द्वारा किसी अन्य उत्तर में भी जवाब दिया गया है (भले ही सवाल काफी अलग है)।

एक नज़र Integer summing blues, short += short problem

+0

यह प्रश्न भी दूरस्थ रूप से वही नहीं है, और न ही इसे उत्तर दिया गया है। –

+1

@ बेंजामिन: बस संदर्भ के लिए, तथ्य यह है कि मूल प्रश्नकर्ता ने उत्तर स्वीकार करने के लिए चुना नहीं है इसका मतलब यह नहीं है कि इसका उत्तर नहीं दिया गया है। बहुत सारे लोग कभी इसके आसपास नहीं लगते हैं, या समझते हैं कि उन्हें माना जाता है। आप आमतौर पर समुदाय से प्राप्त वोटों की संख्या के आधार पर किसी विशेष उत्तर की गुणवत्ता के बारे में अधिक बता सकते हैं, चाहे वह स्वीकार किया गया हो या नहीं। –

+1

उस उत्तर का महत्वपूर्ण हिस्सा यह है कि यह एक int के रूप में समाप्त होने वाले सभी छोटे ऑपरेशन के बारे में बात करता है। जैसा कि मैंने कहा, सवाल अलग है, लेकिन जवाब मूल रूप से वही होगा। वह छोटा छोटा int intals int। –

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

  • कोई संबंधित समस्या नहीं^_^