Código original, código inverso, código complemento, código marco
Antes del artículo: este artículo contiene algunas notas y experiencias durante mi estudio. Se publica principalmente para registrar mi proceso de aprendizaje. Mi nivel educativo no es alto, por lo que mis apuntes inevitablemente tendrán deficiencias o incluso errores, pero los actualizaré de vez en cuando.
Conocimientos básicos: supongamos que hay un número binario de n bits
Entonces el número binario **** tiene múltiples estados, siendo el número más grande
En A su vez, use 1000 0000 está escrito en binario, y un **** tiene 8 dígitos y 7 dígitos decimales después de 1
Los siguientes ejemplos son todos números de n dígitos y todos los ejemplos son de 8 dígitos. números
Código original
Binario simple y claro, tomemos como ejemplo los números de punto fijo.
Decimal puro en coma fija: 0 100 0000 El primer bit es el bit de signo, 0 significa positivo, 1 significa negativo, es decir, 0,1 (10)
Decimal puro en coma fija entero: 0 000 0001, que significa 1 (10)
Como hay un bit de signo, hay cero positivo y cero negativo, 0 000 0000 y 1 000 0000
Los datos el rango es - 127~127 (los últimos 7 bits son números positivos, 1 000 0000)
El rango de datos es - 127~127 (los últimos 7 dígitos son números negativos, 1 000 0000 es positivo número, 1 000 0000 es un número negativo). 127 ~ 127 (los últimos 7 bits son todos 1) // La ecuación es
Características: el código original no es adecuado para suma y resta, pero sí para multiplicación y división
Código inverso
El código inverso de un número positivo es el mismo que su código original. El código inverso de un número negativo es invertir el código original bit a bit después del bit de signo, y el bit de signo permanece; sin cambios (1)
El código inverso de un número negativo El código es una inversión bit a bit del código original, y el bit de signo permanece sin cambios. Código de complemento
Propósito: facilitar las operaciones de suma y resta por computadora
Características:
1: Un número de representación adecuado para sumar y restar en la máquina
La esencia del código de complemento a dos que puede realizar la "suma de números negativos" de la computadora es el principio de multiplicación modular, es decir, la computadora realizará operaciones de suma y resta siempre que A menos B sea igual
El código de complemento a dos puede realizar la "suma de números negativos" de la computadora. La esencia es el principio de la multiplicación modular. Es como un reloj que gira en el sentido de las agujas del reloj durante 3 horas y en el sentido contrario durante 9 horas.
Encuentra el complemento en binario:
El complemento = (número original + módulo) (módulo), obviamente, si el número original es un número positivo, entonces el complemento es Per Así, para números positivos no es necesario pensar en encontrar el complemento en absoluto.
Para computadoras, como el número de dígitos (n) de los dos sumandos es el mismo y la suma no puede exceder n+1 dígitos, el módulo que se debe tomar es 100000...( n ceros) .
Por lo tanto, para decimales puros de n dígitos, el módulo (decimal) es 2, y para enteros puros de n dígitos, el módulo es 2 n
Módulo: (1 0 000 0000 )
Número original: (0 000 0000)
Tenga en cuenta que aunque el bit de signo no contiene ninguna información numérica, el bit de signo aún se tiene en cuenta. La razón de esto es que podemos definir el complemento para que el primer bit de signo participe en los cálculos de la computadora para obtener el resultado deseado.
(Al mismo tiempo, considerando el bit de signo, cuando usamos fórmulas matemáticas para encontrar el complemento a dos, podemos obtener el complemento directamente del resultado
Ejemplo: x= - 0.1011
[x]-complement=1x=10.0000-0.1011=1.0101
Resulta que necesitamos tomar módulo para obtener el complemento de 0.0101(2), pero solo el primer 1 puede representar el código de complemento original.
Además, a diferencia del código original que tiene dos ceros (cero positivo y negativo), solo hay un cero (00000...) en el complemento a dos. especificación, como el original. El código también tiene un cero positivo.
(0 positivo, porque los códigos originales también son 0), y 1 0000... se puede expresar como -1 (decimal puro complementario) o -2 n-1 (entero puro complementario)
// Se puede recordar así (tomando enteros puros como ejemplo): porque los n-1 0 después de la inversión son n-1 1, y después de sumar 1, es 2 n-1 (10), y el 1 anterior es un número negativo, entonces el complemento El código se puede expresar como -2 n-1
Cómo obtener el complemento: el código original es el código positivo y el complemento es el mismo que el código original <; /p>
Código de cuadro
Propósito: facilitar que la computadora compare el tamaño del bit de signo y eliminar la interferencia de la computadora
El principio es mover todos los bits no negativos partes en la dirección no negativa, es decir, para eliminar el significado del primer bit de signo. Método de eliminación: para el complemento de un número positivo, el bit de signo aumenta de 0 a 1. Para el complemento de un número negativo, el concepto de eliminación del bit de signo se define como un número positivo en la computadora, para garantizar que; el número negativo original es menor que el número positivo original. El bit de signo aumenta de 1 a 0.
Para garantizar que la relación de tamaño entre cada número permanezca sin cambios, es necesario usar el código complementario para convertir a código de marco, usar el código original para convertir al código original e invertir el tamaño. relación entre números negativos.
Fórmula matemática:
Desde una perspectiva macro, todo el eje central se mueve hacia el semieje no negativo y la relación de tamaño entre los números permanece sin cambios.
Desplazamiento decimal puro [X] = 1+X
Desplazamiento [X] entero puro = (estándar general)
¿Cómo se genera el código de desplazamiento? s: la mantisa del código de desplazamiento y el código de complemento son las mismas, pero el bit de signo es opuesto (es decir, el primer bit del código de complemento es 1->0; 0->1)
Debido a que el código de turno proviene del código de complemento, también puedes representar un número más
¿Cómo se genera el código de turno?