¿Cómo sabe la CPU que estamos usando el complemento de uno o el complemento de dos para representar números negativos?

La CPU “sabe” que está utilizando una representación entera negativa específica porque ese “conocimiento” está integrado en las instrucciones que tratan con estos valores (es decir, las instrucciones de suma, las instrucciones de resta, etc.). Más específicamente, está integrado en el hardware (o en algunos casos, está integrado en el microcódigo) que implementa las instrucciones específicas que podrían tener que tratar con enteros negativos.

La mayoría de las CPU convencionales modernas están diseñadas para usar la representación del complemento de dos para valores enteros negativos, pero durante mi larga carrera, me he encontrado con algunas CPU y dispositivos de E / S que han utilizado el complemento de uno (junto con bytes de 6 bits, 60 bits palabras y otras cosas ahora consideradas rarezas). En una CPU microcodificada, donde conjuntos de microinstrucciones de muy bajo nivel implementan las instrucciones de la CPU que los desarrolladores verían, es posible configurar las instrucciones de la CPU para usar una representación negativa diferente (por ejemplo, el complemento de uno) cambiando el microcódigo.

El compilador y / o ensamblador que está utilizando necesita tener el conocimiento de la representación entera negativa utilizada en la CPU de destino, de modo que cuando utiliza una constante como -42, la representación correcta de ese valor negativo se codifica correctamente.

Para los valores de punto flotante, si tiene una FPU (unidad de punto flotante), el hecho de que esté utilizando la representación IEEE 754 o alguna otra representación también se integra en las instrucciones de punto flotante del hardware (o en el microcódigo que implementa esos instrucciones). Si no tiene una FPU (por ejemplo, en los días del Intel i386, en un microcontrolador moderno que no tiene soporte de punto flotante de hardware, etc.), y el punto flotante está completamente implementado en el software, entonces cualquier representación podría ser elegido, teóricamente