2015-09-18 12 views
6

की तुलना में मैं कुछ जावा कोड को सी # में परिवर्तित करने की कोशिश कर रहा हूं और यह अब तक बेकार काम कर रहा है लेकिन मुझे^ऑपरेटर के साथ कोई समस्या आई है। सी # Console.WriteLine(127^0xffffffff); प्रिंट 42 9 4 9 67168 जबकि जावा System.out.println(127^0xffffffff); प्रिंट -128 में। मैं यह देखने के लिए चारों ओर देख रहा हूं कि क्या कुछ और है जिसके लिए मुझे उपयोग करने की ज़रूरत है लेकिन मैं कुछ भी नहीं आया हूं।सी # बिटवाई एक्सओआर (^) जावा बिटवाई एक्सओआर (^)

+0

जोड़ने के लिए भूल, मैं इसे जरूरत -128 मुद्रित करने के लिए। – Orion

+2

जावा में, ऑपरेटरों को 'int' टाइप करने के लिए प्रचारित किया जाता है, और परिणाम एक' int' है। सी # में ऑपरेटरों को 'यूंट' में पदोन्नत किया जाता है, और नतीजा एक 'यूंट' होता है। उचित कास्टिंग इस पर ध्यान देना चाहिए। –

उत्तर

8

सी # पर हस्ताक्षर किए के साथ-साथ अहस्ताक्षरित पूर्णांकों का समर्थन करता है (जावा पर हस्ताक्षर किए वाले केवल का समर्थन करता है):

unchecked { 
    // you want signed int 
    int result = (int) (127^0xffffffff); 

    Console.WriteLine(result); 
    } 
+2

वास्तविक समस्या यह है कि 0xffffffff को हस्ताक्षरित int में सकारात्मक संख्या के रूप में प्रदर्शित नहीं किया जा सकता है, जिसके बाद इसे एक हस्ताक्षरित int के रूप में व्याख्या किया जा सकता है। '0xff' को एक int के रूप में व्याख्या नहीं किया जाएगा और हस्ताक्षरित int नहीं। – Voo

+0

आह! मुझे मूर्ख। आपका बहुत बहुत धन्यवाद! मैं इसे उत्तर के रूप में चुनूंगा जब यह मुझे लगभग 6 मिनट में देता है। – Orion

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