यह हस्ताक्षरित पूर्णांक के बिट्स के प्रतिनिधित्व के बारे में एक संदेह है। उदाहरण के लिए, जब आप -1 का प्रतिनिधित्व करना चाहते हैं, तो यह 2 के पूरक (+1) के बराबर है। तो -1 को 0xFFFFFFF के रूप में दर्शाया गया है। अब जब मैं 31 तक अपना नंबर बदलता हूं और परिणाम प्रिंट करता हूं तो यह -1 के रूप में वापस आ रहा है।बिट्स नकारात्मक संख्याओं का प्रतिनिधित्व
signed int a = -1;
printf(("The number is %d ",(a>>31));//this prints as -1
तो किसी को भी कैसे बिट्स ऋणात्मक संख्याओं के लिए प्रतिनिधित्व कर रहे हैं मुझे समझा कृपया कर सकते हैं?
धन्यवाद।
इसे किसी अन्य कोण से देख रहे हैं: किसी भी एन-बिट (साइन-विस्तार) सही शिफ्ट को 2^एन से विभाजित करने के रूप में सोचें, नीचे घूमते हुए (शून्य से अनंतता की ओर, 0 की ओर नहीं) इसलिए -1 स्थानांतरित सही (संकेत के साथ) विस्तार) किसी भी समय उत्पादन -1 पर जारी रहेगा। – vladr