Red de conocimientos turísticos - Conocimientos sobre calendario chino - ¿Por qué el código inverso original y el código complemento de un número positivo son iguales?

¿Por qué el código inverso original y el código complemento de un número positivo son iguales?

Los valores numéricos se expresan como números de máquina en las computadoras. Las computadoras solo pueden reconocer 0 y 1 y usar binario, mientras que en la vida diaria, la gente usa decimal ", como señaló Aristóteles hace mucho tiempo, la adopción generalizada del decimal hoy es solo eso. Resultado del hecho anatómico de que la gran mayoría de las personas nacen con 10 dedos, aunque históricamente la práctica del conteo de dedos (5, decimal) surgió más tarde que el conteo binario o ternario." (Extraído de lt; lt; Historia de las Matemáticas gt; gt;, puedes leerlo cuando tengas tiempo ~, es muy interesante). Para facilitar la conversión a binario, se utilizan hexadecimal (2 4) y octal (23). Empecemos.

Los números pueden ser positivos o negativos, y la computadora usa el bit más alto del número para representar el signo (0 representa un número positivo, 1 representa un número negativo). Este es el código original para los números de máquina. Suponiendo que la cantidad de bits que la máquina puede procesar es 8, es decir, cuando la longitud de la palabra es 1 byte, el rango de valores que puede representar el código original es

(-127 ~ -0 0 ~ 127)***256.

Con la representación numérica, puede realizar operaciones aritméticas con números. Pero pronto descubrimos que cuando usamos el código original con el bit de signo, las operaciones de multiplicación y división eran correctas, pero las operaciones de suma y resta eran problemáticas, de la siguiente manera: Supongamos que la longitud de la palabra es de 8 bits

( 1 ) 10 - ( 1 )10 = ( 1 )10 ( -1 )10 = ( 0 )10

(00000001)original (10000001)original = ( 10000010)original = ( -2 ) Obviamente es incorrecto.

Dado que no hay problema en sumar dos números enteros, se descubre que el problema radica en el número negativo con el bit de signo, y el código inverso de cada bit excepto el bit de signo producirá el código inverso. El código inverso y el código original tienen el mismo espacio de valores y se corresponden entre sí. La siguiente es la operación de resta del código inverso:

(1)10 - (1) 10= (1) 10 (-1) 10= (0)10

( 00000001) Inversa (11111110)inversa = (11111111)inversa = ( -0 ) Hay un problema.

( 1 )10 - ( 2 )10 = ( 1 )10 ( -2 )10 = ( -1 )10

(00000001) inversa (11111110) inversa = (11111110 )inverso = (-1) es correcto

El problema ocurre en (0) y (-0). En el concepto de cálculo de las personas, no hay diferencia positiva o negativa entre 0. (Los indios fueron los primeros en utilizar el cero como marca y escribirlo en la aritmética. Las matemáticas indias y el conteo decimal incluían el cero e hicieron grandes contribuciones a la civilización humana).

Se introduce el concepto de complemento. El complemento de un número negativo consiste en sumar 1 al recíproco del número negativo, mientras que el número positivo permanece sin cambios y el recíproco de un número positivo es igual al complemento del número original. En el código de complemento, se usa (-128) en lugar de (-0), por lo que el rango de representación del código de complemento es:

(-128~0~127)***256.

Nota: (-128) no tiene número original correspondiente ni recíproco, (-128) = (10000000) La suma y resta de complementos es la siguiente:

( 1 ) 10 - ( 1 ) 10= ( 1 )10 ( -1 )10 = ( 0 )10

(00000001)-complemento (11111111)-complemento= (00000000)-complemento= (0)10

(00000001)-complemento (11111111)-complemento = (0)10

(00000001)-complemento (11111111)-complemento = (00000000)complemento = (0) Correcto

( 1 ) 10- ( 2 ) 10= ( 1 )10 ( -2 )10 = ( -1 )10

(00000001)complemento (11111110)complemento = (11111111)complemento = ( - 1) Correcto

Por lo tanto, el propósito de diseño del código complementario es:

(1) Permitir que el bit de signo participe en la operación junto con la parte de valor significativo, simplificando así las reglas de operación.

(2) Convertir operaciones de resta en operaciones de suma, simplificando aún más el diseño del cableado de los operadores en la computadora

Todas estas conversiones se completan en el nivel más bajo de la computadora y en nuestro En otros lenguajes de alto nivel como ensamblador y C, se utiliza código sin formato.

Extraído de /club/showtxt.asp?id=99878.

div>