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

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

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

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

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

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