Exceso de código

El código binario o excedente de compensación es una codificación binaria , con la que pueden representar números con signo en binario. La codificación se basa en un cambio de rango de valores.

Por lo general, los números positivos en el rango de valores de 0 a 2 n -1 se codifican como números binarios de n dígitos de la siguiente manera (aquí para el rango de valores 0..7; codificación estándar):

se muestra en decimal binario mapeado
0 000
1 001
2 010
3 011
Cuarto 100
5 101
Sexto 110
Séptimo 111

Para habilitar la representación binaria de números negativos, se cambia el rango de valores de los números. La extensión del cambio está normalmente en el rango k = m - p, donde m = 2 n-1 y 0 <= p <= m. Por tanto, se habla de un exceso de código k . El exceso de codificación 0 corresponde a la codificación estándar (ver arriba).

Los códigos k en exceso comunes para números binarios de tres dígitos se indican a continuación.

Codificación cambio código
000 001 010 011 100 101 110 111
Exceso 0 0 0 1 2 3 Cuarto 5 Sexto Séptimo
Exceso-1 1 -1 0 1 2 3 Cuarto 5 Sexto
Exceso-2 2 -2 -1 0 1 2 3 Cuarto 5
Exceso 3 3 -3 -2 -1 0 1 2 3 Cuarto
Exceso-4 Cuarto -4 -3 -2 -1 0 1 2 3

La siguiente tabla enumera algunos posibles códigos k en exceso para números binarios de cuatro dígitos.

Codificación cambio código
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
Exceso 0 0 0 1 2 3 Cuarto 5 Sexto Séptimo Octavo 9 10 11 12 13 14 15
Exceso-1 1 -1 0 1 2 3 Cuarto 5 Sexto Séptimo Octavo 9 10 11 12 13 14
Exceso-2 2 -2 -1 0 1 2 3 Cuarto 5 Sexto Séptimo Octavo 9 10 11 12 13
Exceso 3 3 -3 -2 -1 0 1 2 3 Cuarto 5 Sexto Séptimo Octavo 9 10 11 12
Exceso-4 Cuarto -4 -3 -2 -1 0 1 2 3 Cuarto 5 Sexto Séptimo Octavo 9 10 11
Exceso 8 Octavo -8vo -7 -6 -5 -4 -3 -2 -1 0 1 2 3 Cuarto 5 Sexto Séptimo

El código de exceso de 3 (4 bits) , que es idéntico al exceso de 3 en la tabla anterior, tiene un significado histórico : ofrece ventajas cuando se trata de representar y calcular con números decimales.

El código k en exceso tiene aquí un valor muy importante y especial, que se desplaza ocho lugares en el ejemplo anterior (es decir, generalmente k = 2 n-1 , en el ejemplo: exceso-8). Divide el rango de valores de los números en dos mitades iguales de números negativos y no negativos. Para códigos binarios de cuatro dígitos (decimal 0 a 15), el código de 8 en exceso representa los números del -8 al 7, para los códigos de cinco dígitos sería el código de 16 en exceso y el rango de valores de -16 a 15. Se habla en el caso k = 2 n-1 también sin exceso de codificación , por lo que omite el valor numérico k. Por ejemplo, cuando se utiliza la representación en exceso para el exponente, este código de exceso equilibrado (mitad negativo y mitad no negativo) se entiende en casi todos los casos.

Para codificar un número a, se elige el número b más pequeño en el rango de valores y forma la diferencia: d = | a - b |. A continuación, el resultado se codifica como de costumbre.

Por el contrario, decodifica un número con codificación k en exceso convirtiéndolo primero en un número de acuerdo con la codificación habitual y luego sumando el número más pequeño en el rango de valores.

Ejemplo de cálculo

El siguiente ejemplo de cálculo solo se ocupa del exceso de código, por así decirlo, equilibrado (este es el caso de k = 2 n-1 ), que divide los números uniformemente en negativos y no negativos.

Tarea: Para 8 bits, codifique el número -79 en exceso de codificación 128

La longitud del código es n = 8; así que para la representación binaria habitual:

000000002 = 010

y

111111112 = 25510

Dado que el número se codificará en exceso de 128, el rango de valores cambia a:

00000000Exzess-128 = -12810

o.

11111111Exzess-128 = +12710

Codificación:

Die zu codierende Zahl ist a = -79.
Die kleinste Zahl im Wertebereich ist b = -128
Die Differenz ist d = |-79 - (-128)| = 49
In der Standardcodierung ist d = 4910 = 001100012

Entonces la solución es : a = -79 10 = 00110001 exceso-128

La decodificación es análoga: 00110001 se puede decodificar a 49 según la codificación estándar. Luego se agrega el número más pequeño en el rango de valores, aquí -128, es decir: 49-128 = -79.

solicitud

El código en exceso es tolerante con la suma / resta binaria y la comparación de tamaño léxico. En el estándar IEEE-754 para representar números de punto flotante, el exponente se codifica en una forma similar a un código en exceso. Sin embargo, los valores enteros se procesan principalmente en complemento a dos en la unidad aritmética del hardware moderno .

Ver también

Evidencia individual

  1. El código 8 en exceso se denomina aquí binario de compensación. Vea este archivo PDF.