ओवरफ्लो फ्लैग

कंप्यूटर प्रोसेसर में, ओवरफ्लो फ्लैग (जिसे कभी-कभी इसे वी फ्लैग भी कहा जाता है) सामान्यतः सिस्टम स्थिति रजिस्टर में केवल एक बिट होता है, जिसका उपयोग यह सूचित करने के लिए किया जाता है कि किसी ऑपरेशन में अंकगणितीय ओवरफ्लो कब हुआ है, यह दर्शाता है कि सांकेतिक दो-पूरक परिणाम इसमें फिट नहीं होंगे परिणाम के लिए प्रयुक्त की जाने वाली बिट्स की संख्या है। कुछ वास्तुकला को किसी ऑपरेशन पर स्वचालित रूप से अपवाद उत्पन्न करने के लिए कॉन्फ़िगर किया जा सकता है जिसके परिणामस्वरूप ओवरफ्लो होता है।

उदाहरण, मान लीजिए कि हम 8-बिट रजिस्टरों का उपयोग करके 127 और 127 जोड़ते हैं। 127+127 254 है, परंतु 8-बिट अंकगणितीय का उपयोग करने पर परिणाम 1111 1110 बाइनरी होगा, जो कि −2 की दो पूरक एन्कोडिंग है, जो नकारात्मक संख्या है। सकारात्मक ऑपरेंड (या इसके विपरीत) का नकारात्मक योग ओवरफ्लो है। पुन ओवरफ्लो फ्लैग सेट किया जाएगा इसलिये प्रोग्राम समस्या से अवगत हो सके और इसे कम कर सके या त्रुटि का संकेत दे सके। ओवरफ्लो फ्लैग इस प्रकार सेट किया जाता है जब सबसे महत्वपूर्ण बिट (यहां साइन बिट माना जाता है) को एक ही चिह्न के साथ दो संख्याओं को जोड़कर (या विपरीत संकेतों के साथ दो संख्याओं को घटाकर) बदल दिया जाता है। ओवरफ्लो तब नहीं हो सकता जब दो जोड़ ऑपरेंड का चिह्न अलग-अलग हो (या दो घटाव ऑपरेंड का चिह्न समान हो)।

जब बाइनरी मानों की व्याख्या अहस्ताक्षरित संख्याओं के रूप में की जाती है, तो ओवरफ्लो फ्लैग व्यर्थ होता है और सामान्यतः इसे नजरअंदाज कर दिया जाता है। दो के पूरक अंकगणितीय के फायदों में से यह है कि जोड़ और घटाव संचालन को हस्ताक्षरित और अहस्ताक्षरित ऑपरेंड के बीच अंतर करने की आवश्यकता नहीं है। इस कारण से, अधिकांश कंप्यूटर अनुदेश सेट हस्ताक्षरित और अहस्ताक्षरित ऑपरेंड के बीच अंतर नहीं करते हैं, प्रत्येक ऑपरेशन पर (हस्ताक्षरित) ओवरफ्लो और (अहस्ताक्षरित) दोनों झंडे उत्पन्न करते हैं, और जो भी रुचिकर हो उस पर ध्यान देने के लिए निर्देशों का पालन करने पर छोड़ देते हैं।

आंतरिक रूप से, ओवरफ्लो फ्लैग सामान्यतः साइन बिट के अंदर और बाहर एक विशेष या आंतरिक कैरी फ्लैग द्वारा उत्पन्न होता है।

बिटवाइज़ संचालन (और, या, एक्सओआर, नॉट, रोटेट) में हस्ताक्षरित ओवरफ्लो की धारणा नहीं है, इसलिए परिभाषित मान विभिन्न प्रोसेसर वास्तुकला पर भिन्न होता है। कुछ प्रोसेसर बिट को बिना शर्त साफ़ करते हैं (जो उपयोगी है क्योंकि बिटवाइज़ ऑपरेशन साइन फ्लैग सेट करते हैं, और स्पष्ट ओवरफ्लो फ्लैग तब सूचित करता है कि साइन फ्लैग मान्य है), अन्य इसे अपरिवर्तित छोड़ देते हैं, और कुछ इसे अपरिभाषित व्यवहार मान पर सेट करते हैं। बदलाव और गुणन अच्छी तरह से परिभाषित मूल्य की अनुमति देते हैं, लेकिन इसे लगातार लागू नहीं किया जाता है। उदाहरण के लिए, x86 अनुदेश सेट केवल गुणकों और 1-बिट बदलावों के लिए ओवरफ्लो फ्लैग को परिभाषित करता है, बहु-बिट बदलाव इसे अपरिभाषित छोड़ देते हैं।