Excesso-3 - Excess-3

Código Stibitz
Dígitos 4
Trilhas 4
Valores de dígitos 8 4  −2  −1
Peso (s) 1..3
Continuidade Não
Cíclico Não
Distância mínima 1
Distância máxima 4
Redundância 0,7
Lexicografia 1
Complemento 9

O código binário Excess-3 , 3-excess ou 10-excess-3 (frequentemente abreviado como XS-3 , 3XS ou X3 ), binário deslocado ou código Stibitz (após George Stibitz , que construiu uma máquina de somar baseada em relé em 1937) é um código decimal autocomplementar com codificação binária (BCD) e sistema numérico . É uma representação tendenciosa . O código Excess-3 foi usado em alguns computadores mais antigos, bem como em caixas registradoras e calculadoras eletrônicas portáteis de mão da década de 1970, entre outros usos.

Representação

Códigos polarizados são uma forma de representar valores com um número equilibrado de números positivos e negativos usando um número N pré-especificado como valor de polarização. Códigos tendenciosos (e códigos Gray ) são códigos não ponderados. No código de excesso-3, os números são representados como dígitos decimais, e cada dígito é representado por quatro bits como o valor do dígito mais 3 (a quantidade de "excesso"):

  • O menor número binário representa o menor valor ( 0 - excesso ).
  • O maior número binário representa o maior valor ( 2 N +1 - excesso - 1 ).
Excess-3 e código Stibitz
Decimal Excesso-3 Stibitz BCD 8-4-2-1 Binário Extensão CCITT 3 de 6
Extensão Hamming 4 de 8
-3 0000 pseudo-tetrade N / D N / D N / D N / D
-2 0001 pseudo-tetrade
-1 0010 pseudo-tetrade
0 0011 0011 0000 0000 10 0011
1 0100 0100 0001 0001 11 1011
2 0101 0101 0010 0010 10 0101
3 0110 0110 0011 0011 10 0110
4 0111 0111 0100 0100 00 1000
5 1000 1000 0101 0101 11 0111
6 1001 1001 0110 0110 10 1001
7 1010 1010 0111 0111 10 1010
8 1011 1011 1000 1000 00 0100
9 1100 1100 1001 1001 10 1100
10 1101 pseudo-tetrade pseudo-tetrade 1010 N / D N / D
11 1110 pseudo-tetrade pseudo-tetrade 1011
12 1111 pseudo-tetrade pseudo-tetrade 1100
13 N / D N / D pseudo-tetrade 1101
14 pseudo-tetrade 1110
15 pseudo-tetrade 1111

Para codificar um número como 127, basta codificar cada um dos dígitos decimais como acima, fornecendo (0100, 0101, 1010).

A aritmética Excess-3 usa algoritmos diferentes do BCD normal não polarizado ou dos números do sistema posicional binário . Depois de adicionar dois dígitos em excesso, a soma bruta é 6 em excesso. Por exemplo, após adicionar 1 (0100 em excesso-3) e 2 (0101 em excesso-3), a soma parece 6 (1001 em excesso-3) em vez de 3 (0110 em excesso-3). Para corrigir este problema, após adicionar dois dígitos, é necessário remover o viés extra subtraindo o binário 0011 (decimal 3 em binário imparcial) se o dígito resultante for menor que o decimal 10, ou subtraindo o binário 1101 (decimal 13 em imparcial binário) se um estouro (transporte) ocorreu. (No binário de 4 bits, subtrair o binário 1101 é equivalente a adicionar 0011 e vice-versa.)

Motivação

A principal vantagem da codificação em excesso-3 sobre a codificação não polarizada é que um número decimal pode ser complementado por noves (para subtração) tão facilmente quanto um número binário pode ser complementado por uns : apenas invertendo todos os bits. Além disso, quando a soma de dois dígitos excedentes-3 for maior que 9, o bit de transporte de um somador de 4 bits será definido como alto. Isso funciona porque, após somar dois dígitos, um valor "excedente" de 6 resulta na soma. Como um inteiro de 4 bits pode conter apenas valores de 0 a 15, um excesso de 6 significa que qualquer soma acima de 9 irá estourar (produzir um carry out).

Outra vantagem é que os códigos 0000 e 1111 não são usados ​​para nenhum dígito. Uma falha na memória ou na linha de transmissão básica pode resultar nesses códigos. Também é mais difícil gravar o padrão zero em mídia magnética.

Exemplo

Exemplo de conversor BCD 8-4-2-1 para excesso-3 em VHDL :

entity bcd8421xs3 is
  port (
    a   : in    std_logic;
    b   : in    std_logic;
    c   : in    std_logic;
    d   : in    std_logic;

    an  : buffer std_logic;
    bn  : buffer std_logic;
    cn  : buffer std_logic;
    dn  : buffer std_logic;

    w   : out   std_logic;
    x   : out   std_logic;
    y   : out   std_logic;
    z   : out   std_logic
  );
end entity bcd8421xs3;

architecture dataflow of bcd8421xs3 is
begin
    an  <=  not a;
    bn  <=  not b;
    cn  <=  not c;
    dn  <=  not d;

    w   <=  (an and b  and d ) or (a  and bn and cn)
         or (an and b  and c  and dn);
    x   <=  (an and bn and d ) or (an and bn and c  and dn)
         or (an and b  and cn and dn) or (a  and bn and cn and d);
    y   <=  (an and cn and dn) or (an and c  and d )
         or (a  and bn and cn and dn);
    z   <=  (an and dn) or (a  and bn and cn and dn);

end architecture dataflow; -- of bcd8421xs3

Extensões

Extensão 3 de 6
Dígitos 6
Trilhas 6
Peso (s) 3
Continuidade Não
Cíclico Não
Distância mínima 2
Distância máxima 6
Lexicografia 1
Complemento (9)
Extensão 4 de 8
Dígitos 8
Trilhas 8
Peso (s) 4
Continuidade Não
Cíclico Não
Distância mínima 4
Distância máxima 8
Lexicografia 1
Complemento 9
  • Extensão de código 3 de 6: o código excedente 3 às vezes também é usado para transferência de dados e, em seguida, frequentemente expandido para um código de 6 bits por CCITT GT 43 No. 1, onde 3 de 6 bits são definidos.
  • Extensão do código 4 de 8: como alternativa ao código do transceptor IBM (que é um código 4 de 8 com uma distância de Hamming de 2), também é possível definir um código 4 de 8 excedente-3 extensão alcançando uma distância de Hamming de 4, se apenas dígitos denary devem ser transferidos.

Veja também

Referências