Ir al contenido principal
¿Te ayudamos?
oposiciones

Complemento a dos: 8 ejercicios resueltos

12 min de lectura

Practica complemento a dos con ocho ejercicios resueltos: negativos, sumas de ocho bits, acarreo, desbordamiento y ancho mínimo. Soluciones razonadas.

En los ejercicios de complemento a dos, saber invertir bits no basta. Debes fijar el ancho, interpretar el patrón y comprobar si el resultado matemático cabe. Una suma puede producir acarreo sin desbordamiento con signo, o desbordamiento con signo sin acarreo.

Esta práctica reúne ocho preguntas originales con cuatro alternativas y soluciones razonadas. Los casos 1 a 7 usan exactamente ocho bits; el último pregunta qué ancho mínimo necesitas para representar otro entero. Son ejercicios didácticos, no preguntas oficiales ni una predicción sobre la frecuencia de esta materia en un examen.

El modelo de la práctica: ocho posiciones y dos indicadores distintos

En complemento a dos de ocho bits, los pesos de izquierda a derecha son:

Posición, desde la izquierda12345678
Peso−1286432168421

Si el bit izquierdo es cero, lees un valor entre 0 y 127. Si es uno, puedes sumar los pesos con signo o leer el patrón sin signo y restar 256. La explicación de números con signo de Cornell, CS 3410, desarrolla el peso negativo del bit más significativo y los límites del formato.

Para las sumas de los ejercicios 4 a 6, sumamos los patrones y conservamos únicamente los ocho bits inferiores. Llamamos C al acarreo que sale por la izquierda del patrón de ocho bits y V al indicador de que la suma matemática de los operandos con signo queda fuera del intervalo de −128 a 127. Cada indicador vale 0 si no ocurre y 1 si ocurre.

La introducción de Cambridge a los sistemas de numeración, en su apartado de complemento a dos, distingue el acarreo del desbordamiento con signo. Usamos aquí esas dos comprobaciones lógicas; no estamos describiendo las instrucciones ni el tratamiento de errores de una arquitectura concreta.

Método: conserva el resultado matemático como referencia

Antes de sumar bits, interpreta los operandos y calcula su suma decimal. Después suma los patrones, anota el acarreo exterior y separa los ocho bits conservados. Por último interpreta esos ocho bits en complemento a dos y comprueba el intervalo.

En una suma de dos operandos de este formato, si ambos tienen el mismo signo y el patrón conservado tiene el contrario, hay desbordamiento con signo. Si los signos de los operandos son distintos, su suma matemática cabe en el intervalo. Esta regla se refiere a la suma: no la traslades sin más a cualquier otra operación.

Ejercicio 1. El intervalo con signo no es simétrico

¿Qué intervalo completo de enteros representa el complemento a dos de ocho bits?

A. De −127 a 127. B. De −128 a 127. C. De 0 a 255. D. De −128 a 128.

Ver solución del ejercicio 1

Correcta: B. El bit izquierdo tiene peso −128 y los otros siete suman como máximo 127. El mínimo es 10000000, que vale −128; el máximo es 01111111, que vale 127. El intervalo es de −128 a 127, ambos incluidos, y contiene 256 enteros.

A pierde el −128 y solo recoge 255 valores. C corresponde a la interpretación sin signo de ocho bits. D contiene 257 enteros y no cabe en los 256 patrones disponibles. El cero ocupa un patrón, 00000000; no hay un segundo cero negativo en este sistema. Esa única representación explica que haya un negativo más que positivos estrictamente mayores que cero.

Ejercicio 2. Codificar un negativo

¿Qué patrón de ocho bits representa el entero decimal −37 en complemento a dos?

A. 10100101. B. 11011010. C. 00100101. D. 11011011.

Ver solución del ejercicio 2

Correcta: D. Primero escribe +37 con ocho bits: 00100101, porque 37 = 32 + 4 + 1. Invierte las ocho posiciones y obtienes 11011010. Al sumar uno queda 11011011. Como comprobación, su valor sin signo es 219 y 219 − 256 = −37.

A reserva el primer bit como signo y deja 37 en los restantes: es la idea de signo y magnitud, otra representación. B se detiene después de invertir y olvida el uno final. C sigue representando +37. Mantener el ancho de ocho posiciones durante todo el procedimiento evita que el significado del bit izquierdo cambie a mitad de la conversión.

Ejercicio 3. Decodificar sin separar signo y magnitud

El patrón 11100110 está declarado en complemento a dos de ocho bits. ¿Qué entero decimal representa?

A. −26. B. −102. C. 230. D. −25.

Ver solución del ejercicio 3

Correcta: A. Su lectura sin signo sería 128 + 64 + 32 + 4 + 2 = 230. Como el bit izquierdo es uno y la convención es complemento a dos, resta 256: 230 − 256 = −26. Por pesos con signo: −128 + 64 + 32 + 4 + 2 = −26.

B trata los siete bits restantes como una magnitud positiva de 102 y aplica un signo menos, que corresponde a otra regla. C conserva la lectura sin signo. D no coincide con el patrón dado. También puedes invertir 11100110 y sumar uno para recuperar 00011010, de valor 26, y reconocer que el original representaba su negativo.

Ejercicio 4. Desbordamiento sin acarreo saliente

Suma los dos patrones siguientes. ¿Qué opción da, en este orden, el patrón conservado de ocho bits, su lectura en complemento a dos y los indicadores C y V definidos en esta guía?

  01011100
+ 00110010

A. 10001110; −114; C=0; V=0. B. 10001110; 142; C=0; V=0. C. 10001110; −114; C=0; V=1. D. 00001110; 14; C=1; V=0.

Ver solución del ejercicio 4

Correcta: C. Los operandos representan 92 y 50. La suma matemática es 142, que supera el máximo 127. La suma de sus lecturas sin signo también es 142, menor que 256: no hay acarreo saliente, C=0. Los ocho bits conservados son 10001110, cuya lectura con signo es 142 − 256 = −114.

Hay desbordamiento con signo, V=1, porque 142 no cabe en el intervalo del modelo. A confunde ausencia de acarreo con ausencia de desbordamiento. B lee el patrón como si fuera sin signo. D altera el patrón y los indicadores. Dos positivos han producido un patrón negativo: es una señal de desbordamiento en esta suma de complemento a dos, no una igualdad matemática entre 92 + 50 y −114.

Ejercicio 5. Acarreo saliente sin desbordamiento con signo

Resuelve esta suma bajo el mismo modelo. ¿Qué opción contiene patrón conservado, lectura con signo, C y V?

  11110110
+ 00010001

A. 11111101; −3; C=0; V=0. B. 00000111; 7; C=1; V=1. C. 00000111; 7; C=1; V=0. D. 00000111; 7; C=0; V=0.

Ver solución del ejercicio 5

Correcta: C. 11110110 representa −10 y 00010001 representa 17. La suma matemática es 7, que cabe en el intervalo: V=0. Si sumas los patrones como valores sin signo, obtienes 246 + 17 = 263, es decir, 256 + 7. Por tanto, C=1 y los ocho bits inferiores son 00000111, de valor 7.

A responde a otros operandos y no conserva la suma planteada. B atribuye desbordamiento con signo al acarreo, aunque el 7 es representable. D pierde el acarreo exterior. Junto con el caso anterior, este ejemplo demuestra que C y V no son el mismo indicador: puede haber C sin V y V sin C.

Ejercicio 6. Dos negativos que salen del intervalo

Suma los patrones siguientes. ¿Cuál es la combinación correcta de patrón conservado, lectura con signo, C y V?

  10011100
+ 11010010

A. 01101110; 110; C=1; V=1. B. 01101110; 110; C=1; V=0. C. 10010010; −110; C=0; V=0. D. 11101110; −18; C=1; V=1.

Ver solución del ejercicio 6

Correcta: A. Los patrones representan −100 y −46. Su suma matemática es −146, menor que −128: V=1. Las lecturas sin signo son 156 y 210; suman 366 = 256 + 110. Hay acarreo saliente, C=1, y quedan los ocho bits 01101110, cuya lectura con signo es 110.

B conserva los bits, pero niega que −146 esté fuera del intervalo. C y D no dan el patrón inferior de la suma. Dos negativos han producido un patrón positivo: también indica desbordamiento en este modelo. El 110 almacenado no es la suma matemática correcta de los dos enteros; es el valor que se interpreta al conservar solo ocho bits.

Ejercicio 7. El caso especial del mínimo negativo

Partes de 10000000, que representa −128. Inviertes exactamente sus ocho bits, sumas uno y conservas ocho bits. ¿Qué ocurre con el patrón resultante y con el opuesto matemático +128?

A. Queda 00000000, que representa el opuesto 0. B. Queda 10000000 y ahora representa +128. C. Queda 01111111, que representa el opuesto +127. D. Queda 10000000, sigue representando −128 y +128 no cabe.

Ver solución del ejercicio 7

Correcta: D. Invertir 10000000 produce 01111111; sumar uno devuelve 10000000. El patrón sigue representando −128, porque la interpretación y el ancho no han cambiado. El opuesto matemático es +128, pero el máximo representable con signo en ocho bits es +127.

A inventa un cero; B cambia la lectura del mismo patrón sin cambiar la convención; C se detiene en la inversión y no suma uno. La transformación de bits puede calcularse aunque el opuesto matemático no quepa. Por eso debes comprobar la representabilidad además de aplicar la receta de invertir y sumar uno. Aquí no se presupone qué excepción, señal o instrucción produciría un lenguaje o procesador concreto.

Ejercicio 8. Ampliar el ancho cuando ocho bits no bastan

Ahora puedes elegir el ancho. ¿Cuál es el número mínimo de bits de un entero en complemento a dos que permite representar exactamente −130?

A. 8 bits. B. 9 bits. C. 10 bits. D. 16 bits.

Ver solución del ejercicio 8

Correcta: B. Ocho bits llegan hasta −128, así que no admiten −130. Con nueve bits, el intervalo va de −256 a 255: ya contiene −130. Como ocho no bastan y nueve sí, el mínimo es 9 bits. Diez y dieciséis también permitirían representarlo, pero no son mínimos.

Puedes comprobar el patrón de nueve bits calculando 512 − 130 = 382, cuyo binario es 101111110. Su peso con signo da −256 + 126 = −130. No basta con contar las cifras binarias de la magnitud 130 sin atender al signo: el intervalo del formato es la condición que decide la respuesta.

Comprueba la clave y las tres sumas

La clave es 1B, 2D, 3A, 4C, 5C, 6A, 7D y 8B. En los ejercicios de suma, separa siempre estas columnas:

CasoSuma matemática con signoPatrón conservadoLectura con signoCV
492 + 50 = 14210001110−11401
5−10 + 17 = 700000111710
6−100 + (−46) = −1460110111011011

Una cuenta de bits puede estar bien y, aun así, no representar la suma matemática exacta con el ancho elegido. En los casos 4 y 6, ampliar la representación permitiría guardar 142 y −146; conservar ocho bits obliga a distinguir esos valores del patrón resultante. En el caso 5, el acarreo exterior no invalida el resultado con signo 7.

Clasifica tus errores por representación, ancho, suma o indicadores. Si fallaste el caso 2, repite la conversión manteniendo las ocho posiciones. Si fallaste 4 o 5, evita decidir V mirando solo C. Si fallaste 7, comprueba el intervalo antes de afirmar que cualquier transformación de bits produce el opuesto matemático exacto.

Continúa con representación de la información

Si necesitas repasar los pesos y las conversiones, vuelve a los doce ejercicios de binario y hexadecimal. Ese cuaderno trabaja sobre todo enteros sin signo y termina comparando dos lecturas de un patrón. Para distinguir representación de un número y tamaño de un archivo, tienes también los ejercicios de bits, bytes, KiB y MiB.

El material de Analista Informático del Ayuntamiento de Sevilla incluye sistemas de numeración y representación de negativos en complemento a dos. Es un producto de pago; su ficha detalla el contenido. Esta práctica sirve de apoyo a esa materia, sin atribuir los supuestos a un examen oficial ni sustituir el resto del programa.

Los resultados de este cuaderno pertenecen al modelo definido. Por ejemplo, una suma ordinaria de enteros en Python no pierde automáticamente todos los bits que queden fuera de ocho posiciones. Cuando uses una herramienta, aplica expresamente el ancho y la interpretación antes de comparar su salida con esta tabla.

Preguntas frecuentes

¿Qué intervalo tiene el complemento a dos de ocho bits?

Desde −128 hasta 127, ambos incluidos. Hay 256 patrones y un único cero. El patrón 10000000 representa −128 y 01111111 representa 127.

¿Cómo convierto un negativo a complemento a dos?

Comprueba que el valor cabe en el ancho elegido. Para el −37 de esta guía, escribe +37 con ocho bits, invierte las ocho posiciones y suma uno: el resultado es 11011011.

¿Acarreo y desbordamiento con signo significan lo mismo?

No. Con el modelo de esta guía, C indica el acarreo exterior de la suma binaria y V indica que la suma matemática con signo no cabe. El ejercicio 4 tiene C=0 y V=1; el 5 tiene C=1 y V=0.

¿Por qué invertir y sumar uno no convierte −128 en +128 con ocho bits?

Porque +128 no es representable en complemento a dos de ocho bits. La transformación devuelve el mismo patrón 10000000, que sigue significando −128; hace falta ampliar el ancho para representar el opuesto matemático.

¿Estos resultados describen el desbordamiento de cualquier lenguaje?

No. La práctica define una operación matemática: conservar los ocho bits inferiores y examinar su lectura con signo. Un lenguaje o tipo concreto puede tener otras reglas, comprobaciones o excepciones. Los enteros normales de Python no se limitan automáticamente a ocho bits.