El propósito del cambio de código complementario del código original

No involucra operaciones de coma fija y coma flotante. El rango está solo en la representación de datos de números enteros.

Use metáforas y use un pensamiento similar para comprender los puntos en común. Esto es lo que quiero escribir en este artículo.
El método de cálculo está diseñado, y el pensamiento y el propósito del método es la línea principal cuando estudiamos.
El libro de texto de Tang Shuofei sobreestima demasiado mi coeficiente intelectual. Viene con decimales y los complementos son todos cálculos abstractos. No dan algunos ejemplos (¿este, libro de texto para principiantes?) ...


Primero usamos números binarios de 8 bits para representar el valor

Valor de verdad Código original Código de complemento (cuando es un número negativo, código de complemento +1) Código inverso (cuando es negativo, el código original se invierte excepto por el bit de signo) Código de cambio (copia de bit de signo de código de complemento inverso)
-5 1.000 0101 1,111 1011 1,111 1010 0,111 1011
+5 0,000 0101 0,000 0101 0,000 0101 1.000 0101

Tenga en cuenta que la "coma" se utiliza para distinguir el bit de signo de otros bits y no existe realmente.


Plantea claramente algunos problemas por resolver

1. El bit de signo participará en la operación
2. Todas las operaciones de resta deben agregarse
3. Bits de almacenamiento limitado

El principio de resolución del problema 1: mapeo. El mapeo
de [-128, 127] a [0, 255] se especifica manualmente, de modo que "solo los números positivos representan números negativos" se
pueden especificar y un mapeo (código de cambio) Se pueden especificar tamaños fáciles de comparar directamente Comparación de tamaños.

El principio de la solución de problemas 2 y 3- operación de módulo
Después de que el módulo es "complemento", después de añadir el mapeo, que corresponde a los números positivos y negativos correspondientes. El
módulo en sí es una especie de límite de dígitos

Similar al número de ángulos,
en el mismo círculo 60 ° = -300 °, la operación de módulo, donde el módulo es 360 (en el rango de números enteros, de 0 a 359, calculado como 360 = 0)
en un byte 8 bits Excepto por los 7 dígitos del bit de signo,
1111 1111 = 0000 0000, operación de módulo, aquí el módulo es 1 0000 0000 (no hay ningún número que exceda este módulo, ¿ha visto cierto dígito en decimal?)

Pon otra tabla para comparar

código El valor verdadero representado por el código original (bit sin signo) El valor verdadero representado por el código original (bit firmado) El verdadero valor representado por el código del complemento (quien niegue el +1 es el "código")
1111 1111 255 -127 Código original 1000 0001, que significa -1

El propósito de diseñar esta forma de representación (encontrar problemas, inventar herramientas, resolver problemas)

Valor de verdad

Dar un número
3 (decimal) -valor verdadero

Número binario sin signo

Representar 3 (decimal) como número binario binario
0011 sin signo

Código original

Pero, ¿qué hacer si tiene que considerar la señal? ¡Toma el bit más alto como bit de señal!
0,011-código original
Aha, luego negativo 3 (decimal) es
1,011-código original

Complemento

¿Qué pasa si quiero contar 5 (decimal) -3 (decimal)?
0,101
1,011 ¡
Estos dos números no se pueden manipular directamente para obtener el resultado! !
Dado un mapeo, el número positivo sigue siendo él mismo, ¡y el número negativo es módulo! ¡Deje que el número negativo más su valor de módulo sea igual a 1 0000! ——Realice la asignación de [-8, 7] a [0, 15]
(el módulo es un bit mayor que el bit más alto, por ejemplo, el módulo decimal es 10, ningún bit puede ser mayor o igual que 10)

Código complementario (por qué invertir en bits y agregar uno)
Me gusta la oración de este blogger: "Porque lo que quieres no es 1 + 1 = 2, sino por qué 1 + 1 es igual a 2. Por supuesto, no discutimos el problema de 1 + 1. Estamos discutiendo el complemento ".
Este blog resume [número positivo + (código inverso +1) = 0, número negativo = (código inverso +1)]
-piensa que, la asignación del número positivo en sí, el número negativo primero invierte todos los bits (incluido el bit de signo),
luego , por ejemplo, el código inverso de 0010 (+2) es 1101, y debido a que cada bit se invierte, el resultado es 1111,
para hacer el número positivo y la suma de números negativos "se convierte en 0", puede sumar 1 para convertirse en 1 0000, y el módulo es 0000, es decir, "los números opuestos se suman a cero"

Así se obtuvo 3 (decimal) a 10000 valor de módulo = 10000-1011 = 00101
0,101
bit de signo nuevamente de acuerdo con un negativo [10000 = 1111 + 1, se puede ver como "negado +1"]
1,101-complemento

6 (decimal) -3 (decimal) puede ser
0,110
1,101 y la
suma es 10011, y luego el módulo de 1 0000 es 0011 (es un complemento positivo y el complemento positivo es igual al código original).
0,011-el código original del resultado del cálculo (+3)

1 (decimal) -3 (decimal) puede ser
0,001
1,101
sumado a 1110, y luego módulo 1 0000 es 1110 (un complemento negativo). [El cálculo del complemento a uno sigue siendo el complemento de 10011. Cuando el código original es negativo, es necesario "restar uno y negar"]
"Restar uno" de 1110 puede obtener 1101, y luego "
neg " puede obtener 1,010 1,010 —— resultado del cálculo El código original (-2)

Cambio de cuadro

Al comparar el código original,
0,011 (+3),
1,010 (-2) se
expresan como números binarios sin signo.
0011 (3)
1010 (10)
es obviamente irrazonable.
Dado que se han especificado los valores límite, puede ser determinó que los números que comienzan con 1 son todos números negativos. Todos los números que comienzan con 0 son números enteros, ¿cambiarlo? ?
1011 —— + 3 código de cambio
0010—— -2 código de cambio De
esta manera, la asignación del código original a números binarios sin signo es razonable


alimento:

Extraído de: ¿Cuáles son la generación, aplicación, ventajas y desventajas del código original, el código inverso y el código complementario? ——He Xinyu
La descripción del origen del complemento se puede resumir de la siguiente manera:
1. En la computadora, solo hay un sumador y no un restador Todas las operaciones de resta deben realizarse por suma .
2. Usa el complemento en lugar del número original para transformar la resta en suma.
3. El acarreo que aparece es el módulo, y el acarreo en este momento debe ignorarse.
4. En el sistema binario, cuántos dígitos están involucrados en la operación y el módulo es cuántos ceros se agregan después del 1.
El complemento se define de acuerdo con este requisito: los números positivos permanecen sin cambios y los números negativos son módulo menos valores absolutos.

Extraído de: ¿Cuáles son la generación, aplicación, ventajas y desventajas del código original, el código inverso y el código complementario? —— Zhang Tianxing

El llamado código original es el número de máquina, que es un número binario con un bit de signo agregado. El bit de signo de un número positivo es 0 y el bit de signo de un número negativo es 1. Los datos almacenados, procesados ​​y calculados en la computadora suele ser de 8 bits, 16 bits y 32 bits, o 64 bits, aquí está la explicación más simple de 8 bits. Tenga en cuenta que el bit de signo es uno de los 8 bits, por lo que el número que se puede leer intuitivamente es solo 7 (solo los últimos 7 dígitos se pueden expandir por peso). Alguien puede notar que el código original es defectuoso. Solo puede representar 255 estados, porque 00000000 (+0) y 10000000 (-0) son en realidad el mismo número, por lo que el rango del código original se ha convertido en -127 a +127. Este es un problema, se necesita un complemento mágico para resolverlo, porque 10000000 se usa para representar -128 en el complemento.
El llamado complemento a uno también se llama complemento a uno en inglés. El 1 aquí es esencialmente el valor máximo que se puede representar en un sistema de conteo de dígitos finitos. En binario de 8 bits, es 11111111, que es 1 bit. Es 9 en decimal y FFF en hexadecimal de 3 dígitos. La negación también se llama el complemento de uno. Puedes obtener su negación restando un número del número máximo. Es fácil ver que restar cualquier número de 11111111 en binario es la negación bit a bit de este número, y 0 se cambia. 1, 1 se convierte en cero, por lo que se denomina código inverso. El método para negar el código original es que el número positivo permanece sin cambios, el número negativo conserva el bit de signo 1 sin cambios y los bits restantes se invierten bit a bit.
El llamado complemento también se llama complemento a dos en inglés. Este 2 se refiere a la capacidad (módulo) del sistema de conteo, que es el número de estados que el sistema de conteo puede representar. Para un número binario de 1 bit, solo hay dos estados, 0 y 1, por lo que el módulo es 10, que es 2 en decimal, y para números binarios de 7 bits, es 10000000. Este módulo es imposible de obtener, porque el número de dígitos es uno más. Reste un número (parte sin signo) del módulo para obtener el complemento de este número. Por ejemplo, 10000000-1010010 = 0101110. De hecho, debido a que 10000000 = 1111111 + 1, un pequeño cambio se convierte en (1111111-1010010) +1, entonces También se puede expresar negando primero y luego sumando 1. El método para sumar el complemento es que el número positivo permanece sin cambios, el número negativo retiene el bit de signo y primero se suma el complemento a uno.
Recuerde cómo encontrar el complemento de uno, hablemos de cálculos. Mediante el bit de signo y el valor del código original, podemos señalar rápidamente el número que representa, juzgar su positivo y negativo y realizar cuatro operaciones aritméticas, en cambio, el código inverso y el código de complemento son demasiado oscuros para las personas. Si el código original es el lenguaje digital para humanos, entonces el complemento es el lenguaje digital de la computadora. La computadora no necesita saber qué es positivo y negativo, el tamaño, estos juicios son demasiado complicados para ella. De hecho, los números almacenados, procesados ​​y transmitidos tienen solo una forma de complemento . La suma, resta, multiplicación y división que hacen los humanos se pueden resolver sumando y desplazando en la computadora. Esto proviene de la libertad inherente del complemento El poder mágico de la ingeniosa mano de obra de Qiahe es también el tema central del siguiente artículo.
Para la suma y la resta, después de obtener el complemento según el método anterior, se puede sumar directamente, pero el bit de signo debe estar involucrado en la operación al sumar.A veces, se suman los dos bits de signo o el acarreo del bit inferior Si se produce un desbordamiento, deseche el bit desbordado (explicaremos por qué más adelante), y el nuevo bit de signo determina el signo del resultado. Si 0 significa positivo, el resultado es el código original, si 1 significa negativo, el resultado sigue siendo necesario encontrar el complemento para obtener el código original.

Extracto de: El código de complemento corresponde a 128.
El número negativo está representado por el código de complemento, que en realidad implementa un mapeo de [-128, 127] a [0, 255] . Como sigue:

+----------------------------+
| 255     -1       11111111  |
| 254     -2       11111110  |
| 246     -10      11110110  |
| 156     -100     10011100  |
| 129     -127     10000001  |
| 128     -128     10000000  |
| 127      127     01111111  |
| 100      100     01100100  |
| 10       10      00001010  |
| 2        2       00000010  |
| 1        1       00000001  |
| 0        0       00000000  |
+----------------------------+

Supongo que te gusta

Origin blog.csdn.net/sinat_27382047/article/details/105916458
Recomendado
Clasificación