El código directo es una forma de representar números binarios de punto fijo en la aritmética informática . Se utiliza principalmente para escribir números no negativos . En el caso de utilizar un código directo para números, tanto positivos como negativos, es decir, números cuya escritura implica la posibilidad de utilizar un signo menos (números con signo), los bits digitales almacenados del número se complementan con un bit de signo .
En la literatura inglesa, se llama método de signos y magnitudes .
Al escribir un número en un código directo, el bit más significativo (bit más significativo) se declara un bit de signo (bit de signo). Si el bit de signo es 0, el número es positivo ; de lo contrario, es negativo . En los dígitos restantes (que se llaman dígitos digitales ), se escribe la representación binaria del módulo del número.
La función de codificación para números binarios (incluyendo enteros y fracciones mixtas) en un código directo es:
donde es el número del bit de signo (sign bit). En particular, al codificar fracciones binarias propias (es decir, números que satisfacen la desigualdad ), y la función de codificación toma la forma:
El valor del número en el código directo se determina mediante la siguiente fórmula:
dónde:
Como se puede ver en la última fórmula, el bit de signo en el código directo no tiene un peso de bit. Al realizar operaciones aritméticas, esto conduce a la necesidad de un procesamiento separado del bit de signo en el código directo.
Número decimal | número binario | Código binario directo de 8 bits | Nota |
---|---|---|---|
0 | 0 | 0000 0000 | cero positivo |
-0 | -0 | 1000 0000 | cero negativo |
5 | 101 | 0000 0101 | |
diez | 1010 | 0000 1010 | |
-5 | -101 | 1000 0101 | |
-dieciséis | -10000 | 1001 0000 | |
9/16 | 0.1001 | 0.100 1000 | |
-9/16 | -0.1001 | 1.100 1000 | |
105/128 | 0.1101001 | 0.110 1001 | |
-5/128 | -0.0000101 | 1.000 0101 |
En informática, el código directo se utiliza principalmente para escribir números enteros no negativos. Se obtiene fácilmente a partir de la representación de un número entero en cualquier otro sistema numérico . Para hacer esto, es suficiente convertir el número al sistema numérico binario y luego completar los dígitos libres de la cuadrícula de bits de la máquina con ceros.
Sin embargo, cuando se usa para números con signo, el código directo tiene dos inconvenientes.
Realizar operaciones aritméticas con números en un código directo es difícil: por ejemplo, incluso para sumar números con diferentes signos, se requiere, además del sumador , tener un bloque especial " restador ", cuya complejidad de implementación es la misma como la de un sumador convencional . Además, al realizar operaciones aritméticas, el bit de signo necesita un tratamiento especial, ya que no tiene peso. También requiere procesamiento de "cero negativo". Por lo tanto, realizar operaciones aritméticas en números con signo en código directo requerirá una arquitectura de CPU más compleja y generalmente es ineficiente.
Mucho más conveniente para realizar operaciones aritméticas es el código complemento a dos .
El código directo de bits ( bits digitales y un signo) le permite representar números enteros en el rango .
El código directo de bits ( bits digitales y un signo) le permite representar fracciones binarias adecuadas en el rango .