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

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

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

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

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

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