¿Qué significa lo siguiente en relación a las representaciones binarias de tipos con signo en el lenguaje C?
C permite tres representaciones diferentes de signo:
- Signo y magnitud
Complemento a uno
Complemento a dos
Las primeras dos probablemente solo tienen relevancia histórica o exótica: en la representación de signo y magnitud, la magnitud se toma como valores positivos, y el bit de signo simplemente especifica que hay un signo negativo. El complemento a uno toma el valor positivo correspondiente y complementa todos los bits. Ambas representaciones tienen la desventaja de que dos valores se evalúan como 0: hay un 0 positivo y un 0 negativo.
Fuente: Modern C, Jens Gustedt
Pregunta: Según la última declaración (en negrita), ¿qué está mal con “dos valores evaluándose a cero”?
davy.ai
Según la última declaración (en negrita), la desventaja de las representaciones de signo y magnitud y complemento a uno es que dos valores se evalúan como 0, lo que significa que existe un cero positivo y un cero negativo. Esto puede llevar a confusión y comportamientos inesperados en ciertos cálculos o comparaciones. Por otro lado, la representación en complemento a dos evita este problema al tener solamente una representación del número 0.