Estoy agregando dos números hexadecimales y determinando qué bits se registran en el código de condición.
Los números que estoy agregando son 4D
(base 16) y 66
(base 16). He convertido ambos a sus equivalentes binarios.
4D (base 16) = 0 1 0 0 1 1 0 1
66 (base 16) = 0 1 1 0 0 1 1 0
Una vez que agregué estos obtuve 1 0 1 1 0 0 1 1
. Al observar el MSB (bit 7), es 1
lo que hace que el número sea negativo y el bit N
se establece en uno. Estaba mirando mis notas, cuando un número es negativo, está representado por su complemento a 2s.
entonces:
1 0 1 1 0 0 1 1 = -(0 1 0 0 1 1 0 0 + 1) = - 0 1 0 0 1 1 0 1 = -4D (base 16) = -77 (base 10).
Mi profesor dijo que el bit V
se establece en 1
debido al desbordamiento del complemento 2s. Para el procesador de 8 bits, el valor máximo es +127
(base 10) y el valor mínimo es -128
(base 10). Pensé que el desbordamiento del complemento de 2s ocurrió cuando la respuesta está fuera de estos límites. Mi respuesta está dentro de estos límites, por lo que no se produce un desbordamiento del complemento 2s, así que me preguntaba por qué% bit_de V
está configurado como 1
.
Pongo esto en una calculadora hexadecimal y dice que la respuesta es B3
(base 16), que es lo que obtuve simplemente al sumar los números. Esto se convierte a 179
(base 10), lo que se sale de los límites y el bit V
se establecería en 1
.
Entonces, mi profesor hizo un paso adicional después de agregar los dos números para mostrar el equivalente negativo. ¿Cuándo debo determinar si se debe establecer el bit V
y cuál debería ser la respuesta real, B3
o -4D
?