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 .