1. La representación en complemento a dos de un número positivo:
El complemento a dos de un número positivo = código original
El complemento a dos de un número negativo = {el bit de signo del código original permanece sin cambios } + {El bit numérico se invierte bit a bit + 1} o
= {El bit de signo del código original permanece sin cambios} + {El primer 1 desde la derecha del bit numérico y el 0 de la derecha permanecen sin cambios, niega la posición de la izquierda}
Tome los enteros decimales +97 y -97 como ejemplo:
+97 original código = 0110_0001b
Complemento +97 = 0110_0001b
-97 ¿código original?= 1110_0001b
-97 complemento?= 1001_1111b
2 Código original de decimal puro:
¿Cómo obtener el código original de decimal puro? Hay muchos métodos, aquí hay un método más conveniente para el cálculo escrito.
Tomando 0.64 como ejemplo, el código original es 0.1010_0011_1101_0111b.
Método de operación:
Convierta 0,64 * 2^n para obtener la parte entera del resultado de la multiplicación.
Aquí n se toma como 16, y
Se puede considerar que 0.64d =?0.1010_0011_1101_0111b es consistente con el resultado de la consulta.
Experimente nuevamente y establezca n en 12, obtenemos
.
3. El complemento a dos de los decimales puros:
La regla que sigue el complemento a dos de los decimales puros es: después de obtener el código fuente del decimal, el 1 dígito antes del decimal. El punto representa el símbolo, comenzando desde el más bajo (derecha), busque el primer "1" y escríbalo, luego "escriba 0 cuando vea 1, escriba 1 cuando vea 0".
Tome -0.64 como ejemplo, el código original es 1.1010_0011_1101_0111b
El complemento es: 1.0101_1100_0010_1001b
Por supuesto, cuando se expresa en binario en lenguaje de hardware como verilog Es imposible tener un punto decimal (de hecho, no sé dónde poner un punto decimal).
4. En términos generales, es más conveniente convertir a operación entera en este caso -97.64 es un ejemplo Después de la consulta El código original es 1110_0001.1010_0011_1101_0111b
El cálculo escrito. proceso:
-97.64 * 2^16 = -6398935 =?1110_0001_1010_0011_1101_0111b, donde el punto decimal está en el dígito 16 desde la derecha, lo cual es consistente con el resultado de la consulta.
Entonces su complemento es 1001_1110_0101_1100_0010_1001b. Aquí se utiliza el complemento de número negativo = {El bit de signo del código original permanece sin cambios} + {El bit numérico se invierte bit a bit + 1} ?Método
5. Complemente el código para obtener el código original:
Método: ¿El bit de signo no se mueve, el valor de amplitud se invierte +1? o el bit de signo no se mueve, el valor de amplitud es invertido -1
-97.64 complemento=?1001_1110(.)0101_1100_0010_1001b
¿Negativo?=?1110_0001(.)1010_0011_1101_0110b
+1 =?1110_0001(. )1010_0011_1101_0 111b es consistente con el resultado de la consulta p>
6. Ampliación del código en complemento a dos:
Cuando sea necesario, el código en complemento a dos debe ampliarse digitalmente durante la operación. El bit de signo debe extenderse hacia adelante.
-Complemento a 5 = 4'b1011 = 6'b11_1011
ps. La expansión del código original consiste en llevar el bit de signo al frente y luego agregar 0 en la parte superior. parte del bit de expansión.
p>
-5 código original = 4'b'1101 = 6'b10_0101, y el código complementario es 6'b11_1011, que es consistente con lo anterior.
Información ampliada:
Hay tres formas de representar números simbólicos en las computadoras, a saber, código original, código complementario y código complementario. Los tres métodos de representación tienen dos partes: bit de signo y bit numérico. El bit de signo usa 0 para representar "positivo" y 1 para representar "negativo". Sin embargo, los tres métodos de representación son diferentes para el bit numérico.
En los sistemas informáticos los valores siempre se representan y almacenan mediante códigos de complemento. La razón es que utilizando el código de complemento, el bit de signo y el campo numérico se pueden procesar de manera uniforme al mismo tiempo, y la suma y la resta también se pueden procesar de manera uniforme. Además, el proceso operativo de conversión del código complementario y del código original es el mismo y no se requiere ningún circuito de hardware adicional.