c - Storing negative int value in an unsigned bit and subtracting from it -


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

  • 6 उत्तर

सबसे पहले मैंने किया है एक अहस्ताक्षरित int में एक नकारात्मक इनपुट के परिणाम के लिए खोज कर रहा था लेकिन पता नहीं कैसे यह परिवर्तित हो सकता है। उदाहरण -3 की तरह कैसे दिखता है -3 और ऐसा कैसे हुआ?

इससे कैसे घटाना है?

क्या होगा?

  #include & lt; stdio.h & gt; Int main () {अहस्ताक्षरित int num1 = 3, num2 = -2; Printf ("num1 का प्रारंभिक मान% u है। \ N", num1); Printf ("num2 का प्रारंभिक मान% u है। \ N", num2); Num1 = num1 + 1; Num2 = num2 - 1; Printf ("num1 का मान अब% u है। \ N", num1); Printf ("num2 का मान अब% u है। \ N", num2); संख्या 1 = 2147483647; Num2 = -2147483648; Printf ("num1 का मान अब% u है। \ N", num1); Printf ("num2 का मान अब% u है। \ N", num2); Num1 = num1 + 1; Num2 = num2 - 1; Printf ("num1 का मान अब% u है। \ N", num1); Printf ("num2 का मान अब% u है। \ N", num2); वापसी 0;  

ठीक है, लाइन से लाइन चलें ..

1 अहस्ताक्षरित पूर्णांक num1 = 3, num2 = -2;

के लिए num2 = -2; यह अधिकतम अहस्ताक्षरित के मूल्य का एक सकारात्मक पूर्णांक के रूप में दिखाया जाएगा पूर्णांक - 1 (मूल्य कंप्यूटर आर्किटेक्चर और कंपाइलर पर निर्भर करता है)।

जैसे आप num2 = X (कहते हैं) असाइन करते हैं और संग्रहीत मान MAX_UNSIGNED_VALUE होगा - (एक्स -1)।

असल में यह अहस्ताक्षरित int के लिए -X (2 के पूरक में) का प्रतिनिधित्व बिट पैटर्न निर्दिष्ट करेगा। कौन सा एक बड़ा अहस्ताक्षरित मूल्य होगा। 32 बिट के लिए यह 2 ^ 32 - (एक्स + 1) होगा।

रेखा के आगे

  num2 = -2147483648;  

तो मैं 32 बिट int विचार कर रहा हूँ यह (एक अहस्ताक्षरित int- 2147483647 का अधिकतम मूल्य) स्टोर करेगा वह है

num2 = (42 94967295-2147483647) = 2147483648

इस रूपांतरण के बारे में बहुत विस्तृत विवरण दिया गया है, निम्नलिखित आलेखों में दिया गया है।

आशा है कि यह मदद करता है!


Comments

Popular posts from this blog

Active Directory Authenticated Proxy Server with Squid or CNTLM -

java - Can't add JTree to JPanel of a JInternalFrame -

java - @PluginTarget(Node.class) not registering as neo4j plugin -