¿Cómo encontrar el código original de un número? Por favor, explíquelo.
¡Ah, por cierto, sólo los enteros con signo tienen código original, código inverso y código complemento! Otros tipos no lo hacen. Aunque también podemos usar el número binario más pequeño para corresponder al número negativo más pequeño y al más grande, eso no es científico. Hablemos del método científico a continuación. Sigamos hablando de un entero de un byte, pero esta vez hay un símbolo. De todos modos, 1 byte solo puede representar 256 números. Debido a que hay un símbolo, lo representamos como un rango: -128-127.
¿Cómo se almacena en la computadora? Se puede entender de esta manera, usando el bit de signo más alto, si es 0 es un número positivo, si es 1 es un número negativo y los 7 bits restantes se usan para almacenar números de valor absoluto, que pueden represente un número con un valor absoluto de 27, y luego considere casos positivos y negativos, 27*2 o 256 números. En primer lugar, la definición de 0 se almacena en la computadora como 00000000. Para números positivos aún podemos convertir de 00000001 a 01111111 para representar del 1 al 127, tal como convertir números sin signo. Entonces los códigos binarios correspondientes a estos números son los códigos originales de estos números. Mucha gente aquí pensará que los números negativos van de 10000001 a 11111111 para representar -1 a -127. Entonces estás totalmente equivocado. Si este es el caso, entonces un dios solo tiene 255 números, porque no se tomaron 10000000 circunstancias. en cuenta. De hecho, 10000000 representa el entero negativo más pequeño en las computadoras, que aquí es -128. De hecho, no es de 10000001 a 11111111 lo que representa -1 a -127, sino por el contrario, de 10000001 a 11111111 lo que representa -127 a. -1. Los números enteros negativos en las computadoras se almacenan en forma de complemento a dos. ¿Cómo se ve el complemento a dos? ¿Qué quieres decir con código complementario? Aquí tenemos que introducir otro concepto: código inverso. El llamado código inverso consiste en convertir el código original de un número negativo (el código original de un número negativo tiene el mismo valor absoluto que su valor absoluto). El código original correspondiente, en pocas palabras, es un número negativo con el mismo valor absoluto. Invierta los dígitos de cada dígito del código original y el mismo número negativo (código original), es decir, reemplace 1 con 0 y reemplace 0 con. 1. Por ejemplo, el código original de -1 es 00000001, que es el mismo que el código original de 1, luego el código inverso de -1 es 11111110, y el código complementario es agregar 1 al código inverso, es decir , el código de complemento de -1 es 11111110 1=11111111, por lo que podemos calcular que -1 está almacenado en la computadora como 11111111. En resumen, la computadora almacena enteros con signo utilizando el complemento a dos de enteros. El código original es 0, el complemento es 0. El código original de números positivos, el complemento, puede entenderse específicamente como el mismo, el complemento de números negativos. Es el código inverso más 1. ¡Aquí hay algunos ejemplos más para ayudarlo a comprender!
Decimal → Binario (¿cómo funciona?) Si no sabes cómo hacerlo, puedes leer un libro sobre conceptos básicos de informática)
47 → 101111
Entero con signo, código original, código inverso, código complemento a dos
47 00101111 00101111 00101111 (el código complemento a dos es el mismo que el código original y el código inverso y no se puede entender literalmente) p>
-47 10101111 11010000 11010001 (el complemento negativo es sumar 1 al código inverso)
Da otro ejemplo, los estudiantes de lenguaje C deberían haber hecho esta pregunta:
Salida - 1 como ¿Cuál es el resultado para los tipos sin firmar? (Programa a continuación)
#include
void main()
{
short int n=-1;
coutlt;lt;(unsigned short int)nlt;}
En primer lugar, en mi computadora, el espacio de almacenamiento de tipo short int es de 2 bytes, su computadora puede ser diferente, como yo. Dicho esto, depende de la configuración de su computadora. Puede almacenar 28*2 = 65536 información de datos diferente. Si no está firmado, entonces su rango es de 0 a 65535 (de 0 a 216-1, si está firmado, entonces su rango es de -32768 a 32767 (-215 a 215). -1).
En esta pregunta, el valor inicial n es una variable entera corta con signo y le asignamos un valor de -1. Según lo que dijimos anteriormente, se almacenará en la computadora en forma de complemento de 11111111 11111111. Tenga en cuenta que, como mencionamos antes, son 2 bytes. Si generamos por la fuerza enteros cortos sin signo, entonces solo necesitamos almacenar el binario como un entero sin signo en la computadora. Cuando se trata de enteros sin signo, no existe el concepto de código original, complemento a uno y complemento. Podemos poner directamente 11111111 11111111. Convertido a decimal, es 65535. De hecho, sabremos de un vistazo que es el número más grande en el rango de A. Oh, tan simple. Puede compilar y ejecutar el código fuente anterior para ver si el short int en su computadora también tiene dos bytes y obtendrá el mismo resultado que yo. Puede comenzar con la siguiente declaración: coutlt; para ver el espacio de almacenamiento ocupado por tipos de enteros cortos en su computadora, o puede usar sizeof para ver el espacio de almacenamiento asignado para cualquier otro tipo.
Finalmente, me gustaría recordarles a todos que presten atención a la forma en que se almacenan los datos en la computadora. Esto solo se aplica a los datos enteros, no lo discutiremos de otra manera. en profundidad aquí.