¿Cuáles son las diferencias entre Arithmetic Carry y Arithmetic Overflow?

Llevar es la parte del resultado de una adición que se lleva al siguiente dígito más significativo.

Por ejemplo, si agrega 5 + 7, el resultado es 12, entonces el dígito en la posición del resultado es 2 y el acarreo es 1.

En un microprocesador, el indicador de acarreo indica si el resultado de agregar 2 operandos no cabe en el registro de resultados. Para una adición de 8 bits, el rango es 0 … 255. Una operación, por ejemplo, 150 + 150 daría como resultado 300, pero esto no cabe en el rango del resultado, por lo que se establece el indicador de acarreo y el registro de 8 bits resultante se establece en 300-256 = 44.

En consecuencia, el indicador de acarreo se usa para la resta, lo que indica cuándo el resultado se vuelve inferior a cero. Las arquitecturas difieren en polaridad y algunos conjuntos llevan = 1 cuando el resultado sería negativo, otras arquitecturas establecen llevar = 0 para negativos.

El indicador de desbordamiento se utiliza para la aritmética firmada. La aritmética firmada interpreta (por ejemplo) un byte para mantener valores en el rango -128 … + 127. El indicador de desbordamiento se establece cuando una adición excede +127, por lo que el resultado se interpretará incorrectamente como negativo. Del mismo modo, el desbordamiento se establece cuando una resta se vuelve inferior a -128 y se interpreta incorrectamente como positiva.

El acarreo de sustracción en realidad debería llamarse prestado de acuerdo con los cálculos manuales, y el desbordamiento de sustracción debería llamarse bajo flujo.

El desbordamiento se lleva desde la posición más importante. Esas son definiciones relacionadas con implementaciones de CPU, nunca son precisas y pueden diferir un poco de un procesador a otro.