Red de conocimiento informático - Computadora portátil - ¿El bit más alto del código de complemento en C es el bit de signo? Supongamos que el número tiene 8 dígitos, entonces el complemento de -12 es 10001100. ¿El 1 en el dígito más alto representa un número negativo?

¿El bit más alto del código de complemento en C es el bit de signo? Supongamos que el número tiene 8 dígitos, entonces el complemento de -12 es 10001100. ¿El 1 en el dígito más alto representa un número negativo?

1. En primer lugar, permítanme corregir un malentendido del cartel original. El código complementario no tiene nada que ver con ningún lenguaje de programación. Es un mecanismo introducido en el sistema informático para facilitar el almacenamiento y. cálculo Está relacionado con la estructura de almacenamiento de la computadora. La CPU de arquitectura x86 producida por Intel tiene un sumador, por lo que puede calcular sumas, pero sin un mecanismo restador, ¿eso significa que no hay forma de realizar restas? Por supuesto que no. Por ejemplo, si quiero calcular 2-1, primero puedo encontrar el complemento de -1 y luego usar 2 más el complemento de -1 para obtener el complemento del resultado original (todas las computadoras calculan en complemento). ). Volver a convertirlo es el resultado final. Ver más adelante para más detalles.

2. Para que sepas por qué se introduce el código complemento para facilitar la expresión de números negativos. El libro de texto le dice cómo calcular el complemento: 1) El complemento de un número no negativo es él mismo, 2) El complemento de un número negativo es invertir los demás bits excepto el bit de signo y sumar 1, descartar el bit de acarreo, y el bit de signo es 1 constante. Los números enteros en C se dividen en números con signo y sin signo. Los números sin signo deben ser no negativos, por lo que sus complementos son ellos mismos. El bit más alto de un número con signo es el bit de signo, 0 representa un número entero y 1 representa un número negativo, por lo que el rango que puede representar un byte de números con signo es -128 ~ 127

3. el código original se expresa como En el código complementario, ya no hay distinción entre positivo y negativo. Al igual que en su ejemplo, la representación binaria de -12 como un byte es 10001100 y su complemento es 11110100 (no el código inverso. En este momento, no hay distinción entre positivo y negativo. Es el complemento de -12). Así lo almacena el ordenador. Pero cuando desea volver a calcular el código original, su bit más alto puede indicar si el código original es un número positivo o negativo. Si es un número no negativo, el bit más alto debe ser 0 y si es negativo. número, debe ser 1. Ahora, volver a convertir 11110100 al código original sigue siendo el mismo método: el bit de signo permanece sin cambios, los siguientes 7 bits se invierten para convertirse en 10001011 y sumar 1 se convierte en 10001100, que es -12.