Red de conocimiento informático - Aprendizaje de código fuente - ¿Cuáles son los significados de la primitiva, la inversa y el complemento de números enteros?

¿Cuáles son los significados de la primitiva, la inversa y el complemento de números enteros?

La primitiva, la inversa y el complemento de un número entero son la representación binaria de un número decimal en la máquina.

En los ordenadores, los números de coma fija tienen tres formas de representación: número original, número inverso y número complemento.

El llamado código fuente es la representación binaria de punto fijo introducida anteriormente, es decir, el bit más alto es el bit de signo, "0" representa un número positivo, "1" representa un número negativo, y los bits restantes representan el tamaño del valor.

La representación inversa señala que la representación inversa de un número positivo es la misma que su código original; la representación inversa de un número negativo es la representación inversa bit a bit de su código original excepto por el bit de señal.

La notación en complemento a dos señala que el complemento de un número positivo es igual a su código original; el complemento de un número negativo es sumar 1 al último dígito de su código inverso.

1. Código original, código inverso y código complemento

(1) Código original: el valor con un bit de signo añadido directamente antes de la representación.

Por ejemplo, valor de bit de signo

[+7] Código original = 0 0000111 B

[-7] Código original = 1 0000111 B

Nota: a. El código original del número 0 tiene dos formas:

[+0] Código original = 00000000B [-0] Código original = 10000000B

b. Código binario de 8 bits. Rango de representación del código original binario de bits: -127 a +127

(2) Código inverso:

Número positivo: El código inverso de un número positivo es el mismo que el código original.

Número negativo: el código inverso de un número negativo, el bit de signo es "1" y la parte digital está invertida.

Por ejemplo, valor del bit de signo

[+7]inverso = 0 0000111 B

[-7]inverso = 1 1111000 B

Nota: a. El inverso del número 0 también tiene dos formas, a saber:

[+0]inverso = 00000000B

[- 0]inverso=11111111B

b. El inverso del número 0 también tiene dos formas, a saber:

[+0]inverso = 0000000B

[- 0]inverso=11111111B

b. El rango de representación del recíproco binario de 8 bits: -127 a +127

(3) Representación del código complementario

1) El concepto de módulo: La unidad de medida se llama módulo o módulo. Por ejemplo, un reloj cuenta ciclos en base 12, módulo 12. En un reloj, la manecilla de la hora suma a los dígitos enteros de 12 (marcación positiva) o resta de los dígitos enteros de 12 (marcación negativa), y la posición de la manecilla de la hora permanece sin cambios. Las 14 horas se convierten en (pm) las 2 horas después de redondear 12 (14 = 14 - 12 = 2). Marque 10 espacios en el sentido contrario a las agujas del reloj desde las 0 en punto, es decir, reste 10 horas. También se puede considerar que marca 2 espacios en el sentido de las agujas del reloj desde las 0 en punto (sumar 2 horas), es decir, las 2 en punto (0-10 =). -10 = -10 + 12 = 2). Entonces, en el módulo 12, -10 se puede asignar a +2. Se puede ver que para el sistema cíclico módulo 12, el efecto de sumar 2 y restar 10 es el mismo, por lo tanto, en el sistema módulo 12, cualquier operación de restar 10 se puede reemplazar sumando 2, lo que convierte el problema de resta; se convierte en un problema de suma (Nota: solo hay sumadores en la estructura de hardware de la computadora, por lo que para el módulo 12, la mayoría de 10 y 2 son complementarios.

De manera similar, los componentes aritméticos y los registros de la computadora también están limitados a una determinada longitud de palabra (suponiendo que la longitud de la palabra sea 8), por lo que sus operaciones son operaciones de módulo. Cuando el contador alcanza el límite superior de 8 bits (256 bits), el contador se desbordará y comenzará a contar desde el principio. el módulo de un número binario de 8 bits es 28 = 256. En los cálculos, estos dos números complementarios se denominan "códigos complementarios"

2) Representación del complemento:

p>

Positivo número: El complemento del número positivo es el mismo que el código original.

Números negativos: El complemento de un número negativo es el bit de signo "1", y el bit inverso de la parte digital se suma en 1 al último bit (bit más bajo), es decir, "inverso". código + 1".

Por ejemplo: signo bit valor bit

[+7]complemento = 0 0000111 B

[-7]complemento = 1 1111001 B

El código complementario es una forma de codificación importante en las microcomputadoras. .El complemento de un número positivo es el valor verdadero del número que representa, mientras que el complemento de un número negativo tiene una parte del número que no es el valor verdadero del número que representa. El resultado de utilizar la aritmética en complemento a dos sigue siendo complemento a dos.

b. A diferencia del código original y del código de complemento, solo hay un complemento de 0, es decir, complemento [0] = 00000000B.

c. Si la longitud de la palabra es de 8 bits, el rango del código complementario es de -128 a +127, al realizar la operación del código complementario, se debe tener en cuenta que el resultado de la operación no debe exceder el rango; del número que puede representar el código del complemento.

2. Conversión entre código original, código complemento y código complemento

Dado que el código original, el código complemento y el código complemento de números positivos son iguales, no es necesario realizar la conversión.

Aquí sólo se analizan números negativos.

(1) Dado el código original, encuentre el complemento.

Ejemplo: El código original de un número X es 10110100B Intenta encontrar el código complemento y inverso de X.

Solución: De [X] código original = 10110100B, X es un número negativo. 11001100B, [X] código inverso = 11001011B.

(2) Dado el complemento, encuentre el código original.

Análisis: Según el proceso inverso de encontrar el complemento de un número negativo, la parte digital debe ser el bit más bajo menos 1, y luego se invierte. Pero para los números binarios, el resultado obtenido al restar 1 primero y luego contar hacia atrás es lo mismo que sumar 1 y luego contar hacia atrás, por lo que aún se puede usar el método de sumar 1 al recíproco.

Ejemplo: Dado que el complemento de un número X es 11101110B, intenta encontrar su código original.

Solución: El complemento de [X] = 11101110B, X es un número negativo. > Por favor, haz dos preguntas:

¿Cómo se convierten dos números positivos en un número negativo cuando se suman?

1) (+72) + (+98) =?

0 1 0 0 1 0 0 0 B +72

+ 0 1 1 0 0 1 0 1 0 B +98

1 0 1 0 1 0 1 0 1 0 B -42

¿Cómo sumar dos números negativos para convertirlos en un número positivo?

2) (-83) + (-80) = ?

1 0 1 0 1 1 0 1 B -83

+ 1 0 1 1 0 0 0 B -80

0 1 0 1 1 1 0 1 B +93

Pensamiento: Ambas preguntas siguen leyes operativas normales, pero los resultados son obviamente diferentes. Correcto. , ¿qué está sucediendo?

Respuesta: Esto se debe a que se produjo un desbordamiento.

Si la longitud de la palabra de la computadora es de n bits, el bit más alto del número binario de n bits es el bit de signo y los n-1 bits restantes son los bits numéricos. el rango del número X que se puede expresar es - 2n-1≤X≤2n-1-1

Cuando n=8, el rango de números con signo que se pueden representar es -128~+127. Cuando se suman dos números con signo, el resultado es mayor que el número que se puede representar y el resultado es mayor que el número que se puede representar. Cuando se suman dos números con signo, si el resultado excede el rango de números con signo, se produce un desbordamiento y el resultado es incorrecto. Obviamente, el desbordamiento solo ocurrirá cuando se sumen dos números del mismo signo o se resten dos números de diferente signo.

Para operaciones de suma, si el segundo bit más alto (el bit más alto de la parte digital) forma una conexión de acarreo con el bit de orden más alto y se agrega el bit de orden más alto (bit de signo) ( incluido el acarreo del segundo bit más alto) pero no se genera acarreo, o por el contrario, si no hay acarreo desde el segundo bit más alto al bit de orden más alto, pero hay una salida de acarreo desde el bit de orden más alto, se producirá un desbordamiento. Porque las dos situaciones son: sumando dos números positivos, el resultado está fuera del rango y la forma es un número negativo; sumando dos números negativos, el resultado está fuera del rango y la forma es un número positivo.

Para las operaciones de resta, cuando el siguiente número más alto no necesita tomar prestado del número más alto, el número más alto necesita tomar prestado (número positivo menos número negativo, la diferencia está fuera de rango), o por el contrario, el segundo número más alto debe tomar prestado del número más alto también se producirá un desbordamiento cuando se toma prestado un número, pero no es necesario tomar prestado el número más alto (un número negativo menos un número positivo, la diferencia está fuera de rango).

En las computadoras, los datos se almacenan en forma de códigos de complemento, por lo que los códigos de complemento juegan un papel importante en la enseñanza del lenguaje C, y la explicación de los códigos de complemento debe involucrar el código original y el código inverso. Esta sección demuestra cómo realizar código original, código inverso y complemento entero. Tanto el proceso como los resultados se muestran en el cuadro de lista. Los resultados son menores y no es necesario borrarlos automáticamente. El proceso es el mismo y no es necesario borrarlos. Por lo tanto, es necesario configurar los botones Borrar cada sección y Borrar todo. Al realizar la prueba, preste atención a los valores máximo y mínimo de números positivos y negativos. Los usuarios deben prestar atención a si la interpretación se desbordará: cuando todos los bits del código complementario de un número son 1, se desbordará. En este momento, su código original es 10000..., no es un número negativo, por lo que. no se desbordará.

En un número de máquina de n bits, el bit más alto es el bit de signo, el positivo es 0 y el negativo es 1. Los n-1 bits restantes son bits numéricos y cada bit puede ser 0 o 1; . Cuando el valor verdadero es positivo, el código original, el código inverso y el complemento son exactamente iguales; cuando el valor verdadero es negativo, el valor del código original permanece sin cambios y el valor del código inverso es el inverso del código original; valor, y el complemento es el bit más bajo del código inverso más uno. Tenga en cuenta que el bit de signo permanece sin cambios.

Resumen: la información solicitada no debe ser demasiado pequeña. Puede ser "el código inverso de tal o cual número es tal o cual" en lugar de simplemente mostrar el valor numérico.

1. El método de valor del código original: (1) Para números positivos, después de convertirlos en números binarios, agregue un bit de signo en la primera posición (esto se especifica), use 1 para representar negativo números y use 2 para representar números negativos. Por ejemplo, 0000 0000 es un byte, en el que 0 es el bit de signo, que indica un número positivo, y los siete bits restantes representan valores binarios. De hecho, a la máquina no le importan estos. La máquina trata cualquier bit de signo o valor numérico como un valor numérico para el cálculo. ¡El original, el inverso y el complemento de un número positivo son todos el mismo número!

(2) Para números negativos, después de la conversión a binario, el bit de signo anterior es 1.

Al calcular el código original, simplemente agregue el bit de signo correspondiente delante del número binario convertido.

2. Código de inversión: Para números negativos, invierta cada dígito del código original y mantenga el bit de signo sin cambios.

3.

3. Método del código complementario: para números negativos, simplemente agregue 1 binario al código inverso, es decir, agregue 1 al último dígito del código inverso para obtener el código complemento.