Sunday, 15 July 2012

c - negative integer number >> 31 = -1 not 1? -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 4 जवाब

    एक हस्ताक्षरित पूर्णांक (उदाहरण के कुछ):

      -1101363339 = 10111110 01011010 10000111 01110101 में बाइनरी में -2147463094 = 10000000 00000000 01010000 01001010 बाइनरी में -20552 = 11111111 11111111 10101111 10111000 बाइनरी में   

    अब: -1101363339 & gt; & gt; 31 उदाहरण के लिए, 1 बराबर होना चाहिए? लेकिन मेरे कंप्यूटर पर, मैं -1 प्राप्त कर रहा हूं चाहे नकारात्मक पूर्णांक के बावजूद अगर मैं x = ऋणात्मक संख्या, x & gt; & gt; 31 = -1 । क्यूं कर? स्पष्ट रूप से बाइनरी में 1 होना चाहिए।

    प्रति C99 6.5.7 बिटटिव पारी ऑपरेटर्स:

    अगर ई 1 में एक हस्ताक्षरित प्रकार और एक नकारात्मक मूल्य है, तो परिणामस्वरूप मूल्य कार्यान्वयन-परिभाषित है।

    जहां E1 शिफ्ट अभिव्यक्ति की बाईं ओर है तो यह आपके संकलक पर निर्भर करता है कि आपको क्या मिलेगा।

No comments:

Post a Comment