En los procesadores de computadora, el indicador de desbordamiento (a veces llamado indicador V ) suele ser un bit en un registro de estado del sistema que indica cuándo se ha producido un desbordamiento aritmético en una operación, lo que significa que el resultado en complemento a dos con signo no cabe en la cantidad de bits utilizados para dicho resultado. Algunas arquitecturas pueden configurarse para generar automáticamente una excepción cuando una operación produce un desbordamiento.
Por ejemplo, supongamos 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 en complemento a dos de −2, un número negativo. Una suma negativa de operandos positivos (o viceversa) es un desbordamiento. El indicador de desbordamiento se activaría entonces para que el programa pueda detectar el problema y mitigarlo o señalar un error. El indicador de desbordamiento se activa cuando el bit más significativo (en este caso, el bit de signo) cambia al sumar dos números con el mismo signo (o restar dos números con signos opuestos). No puede haber desbordamiento cuando el signo de dos operandos de suma es diferente (o el signo de dos operandos de resta es el mismo). [ 1 ]
Cuando los valores binarios se interpretan como números sin signo , el indicador de desbordamiento carece de sentido y normalmente se ignora. Una de las ventajas de la aritmética de 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 las computadoras no distinguen entre operandos con signo y sin signo, generando indicadores de desbordamiento (con signo) y de acarreo (sin signo) en cada operación, y dejando que las instrucciones subsiguientes presten atención al que sea relevante. [ 2 ]
Internamente, el indicador de desbordamiento generalmente se genera mediante una operación OR exclusiva del acarreo interno de entrada y salida del bit de signo.
Las operaciones bit a bit (AND, OR, XOR, NOT, ROTATORIA) no contemplan el desbordamiento con signo, por lo que su valor definido varía según la arquitectura del procesador. Algunos procesadores borran el bit incondicionalmente (lo cual resulta útil, ya que las operaciones bit a bit activan el indicador de signo, y el borrado del indicador de desbordamiento indica que este es válido), otros lo dejan sin cambios y algunos le asignan un valor indefinido . Las operaciones de desplazamiento y multiplicación sí permiten un valor bien definido, pero su implementación no es consistente. Por ejemplo, el conjunto de instrucciones x86 solo define el indicador de desbordamiento para las multiplicaciones y los desplazamientos de 1 bit; los desplazamientos de varios bits lo dejan indefinido.
Referencias
- ↑ Kholodov, Igor (1 de noviembre de 2008). "Detección de desbordamiento: suma de números con signo" . CIS77 Introducción a los sistemas informáticos (apuntes del curso). Bristol Community College . Consultado el 30 de diciembre de 2020 .
- ↑ Allen, Ian D. (25 de febrero de 2011). "El indicador CARRY y el indicador OVERFLOW en aritmética binaria" . DAT 2343 Arquitectura de Sistemas Informáticos (notas del curso). Algonquin College .
- aritmética informática