Cómo representar un número binario, como 110110011, en exceso de código 511

Las codificaciones en exceso (511 incluidas) rara vez se usan para valores enteros. Sin embargo, a menudo se usan en porciones dentro de valores de coma flotante. Por ejemplo, la parte del exponente del formato de coma flotante estándar IEEE utiliza codificación en exceso (la cifra exacta depende de la longitud de bits del número completo).

David tiene razón en que algo como una codificación de 9 o 10 bits tiene poco sentido (si se toma solo). Esto se debe a que la memoria, el registro, el almacenamiento y básicamente todas las formas de direccionamiento dentro de una computadora funcionan en bytes (es decir, múltiplos de 8 bits). Entonces, incluso si solo usa 9 o 10 bits, terminará con 16 bits de todos modos, el resto es solo espacio perdido (por ejemplo, mire las codificaciones BCD). Sin embargo, cuando los utiliza dentro de otros contextos, comienzan a tener sentido, es decir, forman parte de un formato de codificación más grande donde el resto del formato ocupa las otras partes del espacio múltiple de 8 bits.

Por ejemplo, la codificación de precisión simple IEEE es un valor de 32 bits que utiliza una codificación de 127 en exceso para su exponente; por lo tanto, la parte del exponente utiliza 8 bits de los 32 bits completos. La precisión doble IEEE es una codificación de 64 bits donde la parte del exponente se guarda en una codificación de más de 1023, el exponente ocupa 11 bits de los 64 bits completos. El resto se usa para almacenar el bit de signo y la mantisa.

Ahora, entendiendo qué es el exceso de codificación: extremadamente simple. Es solo una declaración de que un valor preestablecido siempre se agrega al valor que se va a almacenar. Entonces, tomar el valor 100 y almacenarlo en exceso-511 significa que necesita agregar 511 en el 100, almacenar -200 significa agregar 511 en -200. Por cierto, el exceso de 511 significa 10 bits, no 9; de lo contrario, sería una codificación de exceso de 255.

Entonces aquí va:

435 + 511 = 946 = Bx1110110010
-435 + 511 = 76 = Bx0001001100

Tenga en cuenta cómo lo negativo tiene ceros a la izquierda? Esto se debe a que el exceso de 511 es una codificación de 10 bits, por lo que utiliza 10 bits, incluso cuando parece que solo se necesitan 7 como se indicó anteriormente.

No estoy seguro de por qué alguien querría un sistema de números de 10 bits, ya que todas las computadoras usan bytes de 8 bits, pero creo que de lo que estás hablando es de que puedes tomar cualquier número de -511 a 512 y representarlo en 10 bits codificándolo como el número 511 más que él. Por lo tanto, -435 codifica para el número binario sin signo 76 = 001001100 y 435 codifica para el número binario sin signo 946 = 1110110010

Si solo está interesado en representar números no positivos, puede hacerlo con solo 9 bits, pero en este sistema, 0 es el número más grande representable en 9 bits.