408-Comprensión del código original, código inverso, complemento y código de turno del grupo 2 -jiku_wang

Código original, código inverso, complemento, código de turno

 

El original, el inverso y el complemento son todos para tratar con números negativos, y el original, el inverso y el complemento de los números positivos son ellos mismos.

 

1. La forma de los datos en la computadora:

Como todos sabemos, los datos se almacenan en la computadora en forma de 100101010

Los datos se dividen en números con signo y números sin signo;

Los números sin signo son todos bits numéricos;

El primer bit de un número con signo es el bit de signo, 0 es positivo, 1 es negativo;

¿Por qué hay un número firmado? Este es el desarrollo inevitable de la naturaleza, que significa "la cantidad de dinero que se debe a los demás".

Pero esta situación no es muy amigable con la computadora:

ejemplo:

Configure la longitud de la palabra de la computadora en 4 bits (solo se pueden almacenar 4 bits)

+1: 0001

-1: 1001

1 + (- 1) = 1002 (-2 !!!)

Esto está mal, por lo que se introduce el concepto de complemento de uno.

=====================================

2. ¿Por qué hay un código inverso?

En primer lugar, solo se implementa el sumador dentro de la computadora, pero no se implementa el restador.

Entonces para expresar X-Y

Debe tener el formato X + (-Y)

¡El principal problema es cómo representar números negativos ! !

El código inverso es para resolver este problema.

Código inverso:

El complemento de un número positivo es en sí mismo

El código inverso de un número negativo se basa en el código original, el bit de signo permanece sin cambios y los bits restantes se invierten.

caracteristicas:

El resultado calculado por el código inverso sigue siendo el código inverso y debe invertirse nuevamente;

------------------------

Primero debemos entender la aritmética del módulo :

 

Como se muestra en la figura, cuando el valor es demasiado grande para exceder el número máximo de dígitos, se producirá un desbordamiento y volverá a 0;

Esta es una computadora con una longitud de palabra de máquina de 4, con un módulo de 2 ^ 4 = 16;

Entonces, el rango que puede representar es 0~15,

-----------------------------------------

Un número negativo se puede reemplazar por su complemento positivo, y este complemento positivo se puede obtener sumando el módulo al número negativo en sí.

Cuando un número positivo y un número negativo son complementarios, la suma de los valores absolutos de los dos números es módulo

El complemento de un número positivo es él mismo.

-----------------------------------------

Ahora tome el cálculo  5 - 3como ejemplo:

 # 按以上理论,减一个数等于加上它的补数,所以
 5 - 3
 # 等价于 
 5 + (16 - 3)   // 算术运算单元将减法转化为加法
 # 用二进制表示则为:
 0101 + (10000 - 0011)
 # 等价于
 0101 + ((1 + 1111) - 0011)
 # 等价于
 0101 + (1 + (1111 - 0011))
 # 等价于
 0101 + (1 + 1100) // 1 + 12
 # 等价于
 0101 + 1101  //13

 # 最后一步 0101 + 1101 等于
 10010

 由于机器是4位所以要溢出1;即
 0010 = 2!!!!

Después de comprender el concepto de módulo, hablemos de la inversa

---------------------------------

Esto trae a colación 1 problema:

(1) Hay dos 0 : +0 0000 y   -0    1111

Un ejemplo de cálculo del código inverso:

1 + (- 1) [inverso] = 0001 + 1110 = 1111;

// 1111 es -0 en el complemento 

6 + (-2) [inverso] = 0110 + 1101 = 0011;

// 0010 se invierte para obtener 0100 (4), ¡es genial!

-7 [reverso] + 2 = 1000 + 0010 = 1010;

¡1010 se invierte para obtener 1101 = 5!

 

====================================

3. El papel del complemento

¿Por qué se llama complemento?

La clave está en la palabra "complemento", complemento

Debido a que hay dos 0 después del procesamiento del código inverso, el código inverso obtiene el número + 1; puede eliminar uno-0 (1111)

 

La definición de complemento:

-------------

Es sumar 1 según la operación de adición normal sobre la base del código inverso.

Por ejemplo: X = -101011, [X] original = 10101011, [X] reverso = 11010100, [X] complemento = 11010101

PS: el complemento de 0 es único, si la longitud de la palabra de la máquina es 8, entonces el complemento de [0] = 00000000.

caracteristicas:

El resultado calculado por el complemento también es el complemento

Esto resuelve el problema de +0 y -0 al mismo tiempo

Además, el problema de "la suma de números positivos y negativos es igual a 0" también se satisface

Por ejemplo, sume 3 y (-3), 0011 + 1101 = 10000 y pierda el bit más alto, que es 0000 (0)

Si hay una pérdida, debe haber una ganancia. Perdimos (-0) y ganamos (-8)

Lo anterior es la forma de "complementar"

Conclusión: después de guardar los números positivos y negativos y mejorar continuamente el esquema, se selecciona el mejor esquema de "código complementario"

De esta forma, restamos un número y lo convertimos a la forma negativa de sumar este número

Es sumar el complemento de este número negativo, invertido y sumar uno.

ejemplo:

7 - 3
等价于
7 + (-3)

01111 + 1101[补]  =   10100 (进位溢出)

得到0100 (补码)
取反加1,得到:
0011 + 1 = 0100 ——>4!

 

4. El papel del cambio de marco

La computadora usa el complemento de uno para calcular, pero el complemento de uno no es muy amigable para las personas.

 

Por lo tanto, use el código de turno para procesar, puede mostrar el tamaño

El código de cambio es agregar una constante al valor verdadero X, 2 ^ n n es la longitud de la palabra menos 1

caracteristicas:

Solo es necesario invertir el bit de signo del código de complemento para obtener el cambio de código.

=====================================

Articulo de referencia:

https://www.zhihu.com/question/20159860

https://blog.csdn.net/leonliu06/article/details/78685197

terminado

Supongo que te gusta

Origin blog.csdn.net/Vast_Wang/article/details/106958220
Recomendado
Clasificación