Bandera de desbordamiento - Overflow flag

En los procesadores de computadora, el indicador de desbordamiento (a veces llamado indicador V ) es generalmente un bit único en un registro de estado del sistema que se utiliza para indicar cuándo se ha producido un desbordamiento aritmético en una operación, lo que indica que el resultado del complemento a dos firmado no encajaría en número de bits utilizados para el resultado. Algunas arquitecturas pueden configurarse para generar automáticamente una excepción en una operación que resulte en un desbordamiento.

Un ejemplo, suponga que sumamos 127 y 127 usando registros de 8 bits. 127 + 127 es 254, pero usando aritmética de 8 bits el resultado sería 1111 1110 binario, que es la codificación del complemento a dos de −2, un número negativo. Una suma negativa de operandos positivos (o viceversa) es un desbordamiento. La bandera de desbordamiento se establecería entonces para que el programa pueda ser consciente del problema y mitigarlo o señalar un error. La bandera de desbordamiento se establece así cuando el bit más significativo (aquí considerado el bit de signo) se cambia sumando dos números con el mismo signo (o restando dos números con signos opuestos). El desbordamiento no puede ocurrir cuando el signo de dos operandos de suma es diferente (o el signo de dos operandos de resta es el mismo).

Cuando los valores binarios se interpretan como números sin signo , la bandera de desbordamiento no tiene sentido y normalmente se ignora. Una de las ventajas de la aritmética en complemento a dos es que las operaciones de suma y resta no necesitan distinguir entre operandos con signo y sin signo. Por esta razón, la mayoría de los conjuntos de instrucciones de computadora no distinguen entre operandos firmados y no firmados, generando tanto desbordamiento (con signo) como banderas de acarreo (sin signo) en cada operación, y dejando que se sigan las instrucciones para prestar atención a la que sea de interés.

Internamente, el indicador de desbordamiento generalmente se genera mediante un acarreo exclusivo o interno dentro y fuera del bit de signo.

Las operaciones bit a bit (y, o, xor, no, rotar) no tienen una noción de desbordamiento firmado, por lo que el valor definido varía en diferentes arquitecturas de procesador; algunos borran el bit incondicionalmente, otros lo dejan sin cambios y aún así lo establecen en un valor indefinido . Los cambios y las multiplicaciones permiten un valor bien definido, pero no se implementa de manera consistente. Por ejemplo, el conjunto de instrucciones x86 solo define el indicador de desbordamiento para multiplicaciones y cambios de 1 bit; los cambios de varios bits lo dejan sin definir.

Referencias