Recogiendo este bit específico:
Cuando agrega números de complemento a 2, ¿significa que siempre tiene que trabajar en un número predefinido de bits, y si es así, por qué?
Sí, necesitas saber la cantidad de bits con los que vas a trabajar, porque eso determina cómo se verá la representación de tu número negativo en el complemento a dos.
Entonces, en tu ejemplo, tienes:
+27 0001 1011b
+ -17 1110 1111b
-------------------
+10 0000 1010b
donde habría un "carry" fuera del 8 th -bit. Si tuviéramos que hacer incorrectamente haciendo el mismo cálculo usando más bits, y tomando nota del 8 th -bit carry, obtendríamos la respuesta incorrecta:
+27 0000 0001 1011b
+ -17 0000 1110 1111b << WRONG representation of "-17" in 12 bits.
------------------------
+266 0001 0000 1010b << WRONG answer in 12 bits.
Sin embargo, si lo hacemos de nuevo, pero usando la representación correcta de 12 bits de -17
, nuevamente obtenemos el resultado correcto, aunque aquí estamos "ignorando" el mantenimiento de los 12 th bit:
+27 0000 0001 1011b
+ -17 1111 1110 1111b << Correct representation of "-17" in 12 bits.
------------------------
+ 10 0000 0000 1010b << Correct answer in 12 bits.
Conceptualmente, puede pensar que la representación "verdadera" de complemento a dos de -17
es una cadena infinita de 1
s, que termina en ...10 1111
. Al realizar cálculos con un número finito de bits, toma la cantidad suficiente de esos 1
s para completar su registro y descartar cualquier "acarreo" que salga de ese tamaño.