Veamos a nivel de bits lo que sucede en una adición. Vamos a agregar 1111
a 1000
.
- Primero, tome los bits menos significativos (LSB, el más correcto). Tenemos un 1 y un 0. Sumado, eso hace 1. No hay desbordamiento aquí.
- Ahora, el segundo bit. Nuevamente un 1 y un 0, así que otra vez un 1. Sin desbordamiento, otra vez.
- Lo mismo ocurre con el tercer bit.
- El bit más significativo (MSB, el que queda más) es diferente: dos. Esto le da un 0 sumado, con un desbordamiento. Eso significaría que el quinto bit obtendría un 1 extra, sin embargo, no hay un quinto bit, por lo que el desbordamiento se coloca en el carry.
El resultado final es: 0111
Ahora, echemos un vistazo a los bits de estado .
- Z: "Indica que el resultado de una operación aritmética o lógica (o, a veces, una carga) fue cero". ¿Es
0111
cero?
- V: "Indica que el resultado firmado de una operación es demasiado grande para ajustarse al ancho del registro usando dos representaciones complementarias". ¿Tenemos un desbordamiento?
- C: "se usa para indicar cuándo se ha generado una aritmética de acarreo o préstamo a partir de la posición de bit ALU más significativa". ¿Se llevó a cabo el MSB?
- N: "Indica que el resultado de una operación matemática es negativo". ¿El resultado es negativo?