Vlajka přetečení - Overflow flag

V počítačových procesorech je příznak přetečení (někdy nazývaný příznakem V ) obvykle jeden bit ve stavovém registru systému, který se používá k označení, kdy v operaci došlo k aritmetickému přetečení, což naznačuje, že výsledek podepsaného dvojkového doplňku by se nevejde do počet bitů použitých pro výsledek. Některé architektury mohou být nakonfigurovány tak, aby automaticky generovaly výjimku u operace vedoucí k přetečení.

Příklad předpokládejme, že přidáme 127 a 127 pomocí 8bitových registrů. 127 + 127 je 254, ale při použití 8bitové aritmetiky bude výsledkem binární 1111 1110, což je dvojkové kódování komplementu −2, záporné číslo. Záporný součet kladných operandů (nebo naopak) je přetečení. Poté by byl nastaven příznak přetečení, aby si program mohl být vědom problému a zmírnit jej nebo signalizovat chybu. Příznak přetečení se tak nastaví, když se nejvýznamnější bit (zde považovaný za bit znaménka) změní přidáním dvou čísel se stejným znaménkem (nebo odečtením dvou čísel s opačnými znaménky). K přetečení nemůže dojít, když se znaménko dvou sčítacích operandů liší (nebo znaménko dvou operátorů odčítání je stejné).

Když jsou binární hodnoty interpretovány jako nepodepsaná čísla , je příznak přetečení bezvýznamný a obvykle ignorovaný. Jednou z výhod aritmetiky komplementu dvou je, že operace sčítání a odčítání nemusí rozlišovat mezi podepsanými a nepodepsanými operandy. Z tohoto důvodu většina počítačových instrukčních sad nerozlišuje mezi podepsanými a nepodepsanými operandy, generuje jak (podepsané) přetečení, tak (nepodepsané) příznaky pro každou operaci a ponechává ji na následujících pokynech, aby věnovaly pozornost kterémukoli z nich je zajímavé.

Interně je příznak přetečení obvykle generován výlučným nebo interním přenosem do a ze znaménkového bitu.

Bitové operace (a, nebo, xor, ne, rotace) nemají představu o přetečení se znaménkem, takže definovaná hodnota se liší v různých architekturách procesorů; některé vyčistí bit bezpodmínečně, jiné jej ponechají beze změny a stále jej nastaví na nedefinovanou hodnotu. Posuny a násobení umožňují dobře definovanou hodnotu, ale není důsledně implementována. Například instrukční sada x86 definuje pouze příznak přetečení pro násobení a 1-bitové posuny; vícebitové posuny to nedefinují.

Reference