Eccesso-3 - Excess-3

Codice Stibitz
Cifre 4
Brani 4
Valori delle cifre 8 4  −2  −1
Peso (i) 1..3
Continuità No
Ciclico No
Distanza minima 1
Distanza massima 4
Ridondanza 0.7
Lessicografia 1
Complemento 9

Codice binario in eccesso 3 , 3 in eccesso o 10 in eccesso 3 (spesso abbreviato in XS-3 , 3XS o X3 ), codice binario spostato o Stibitz (dopo George Stibitz , che ha costruito una macchina addizionatrice a relè nel 1937) è un sistema numerico e un codice decimale codificato in binario (BCD) autocomplementare . È una rappresentazione parziale . Il codice in eccesso-3 è stato utilizzato su alcuni computer più vecchi, nonché nei registratori di cassa e nelle calcolatrici elettroniche portatili portatili degli anni '70, tra gli altri usi.

Rappresentazione

I codici distorti sono un modo per rappresentare valori con un numero equilibrato di numeri positivi e negativi utilizzando un numero pre-specificato N come valore di polarizzazione. I codici distorti (e codici Gray ) sono codici non ponderati. Nel codice in eccesso di 3, i numeri sono rappresentati come cifre decimali e ogni cifra è rappresentata da quattro bit come il valore della cifra più 3 (l'importo "in eccesso"):

  • Il numero binario più piccolo rappresenta il valore più piccolo ( 0 - eccesso ).
  • Il numero binario più grande rappresenta il valore più grande ( 2 N +1 - eccesso - 1 ).
Excess-3 e codice Stibitz
Decimale Eccesso-3 Stibitz BCD 8-4-2-1 Binario Estensione CCITT 3 di 6
Estensione Hamming 4-of-8
−3 0000 pseudo-tetrade N / A N / A N / A N / A
−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 / A N / A
11 1110 pseudo-tetrade pseudo-tetrade 1011
12 1111 pseudo-tetrade pseudo-tetrade 1100
13 N / A N / A pseudo-tetrade 1101
14 pseudo-tetrade 1110
15 pseudo-tetrade 1111

Per codificare un numero come 127, si codifica semplicemente ciascuna delle cifre decimali come sopra, dando (0100, 0101, 1010).

L'aritmetica in eccesso di 3 utilizza algoritmi diversi rispetto ai normali BCD non distorti o ai numeri di sistema posizionali binari . Dopo aver aggiunto due cifre in eccesso a 3, la somma grezza è a 6 cifre in eccesso. Ad esempio, dopo aver aggiunto 1 (0100 in eccesso-3) e 2 (0101 in eccesso-3), la somma appare come 6 (1001 in eccesso-3) invece di 3 (0110 in eccesso-3). Per correggere questo problema, dopo aver aggiunto due cifre, è necessario rimuovere il bias extra sottraendo binario 0011 (decimale 3 in binario non corretto) se la cifra risultante è inferiore a 10 decimale, o sottraendo binario 1101 (decimale 13 in binario non corretto binario) se si è verificato un overflow (carry). (Nel binario a 4 bit, la sottrazione di 1101 binario equivale ad aggiungere 0011 e viceversa.)

Motivazione

Il vantaggio principale della codifica in eccesso di 3 rispetto alla codifica non polarizzata è che un numero decimale può essere completato con nove (per sottrazione) con la stessa facilità con cui un numero binario può essere integrato con uno : semplicemente invertendo tutti i bit. Inoltre, quando la somma di due cifre in eccesso di 3 è maggiore di 9, il bit di riporto di un sommatore a 4 bit sarà impostato alto. Questo funziona perché, dopo aver aggiunto due cifre, un valore "in eccesso" di 6 risulta nella somma. Poiché un numero intero a 4 bit può contenere solo valori da 0 a 15, un eccesso di 6 significa che qualsiasi somma superiore a 9 andrà in overflow (produrrà un'esecuzione).

Un altro vantaggio è che i codici 0000 e 1111 non vengono utilizzati per nessuna cifra. Un guasto in una memoria o in una linea di trasmissione di base può causare questi codici. È anche più difficile scrivere il modello zero su un supporto magnetico.

Esempio

Esempio di convertitore da BCD 8-4-2-1 a 3 in eccesso in 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

Estensioni

Estensione 3 di 6
Cifre 6
Brani 6
Peso (i) 3
Continuità No
Ciclico No
Distanza minima 2
Distanza massima 6
Lessicografia 1
Complemento (9)
Estensione 4 su 8
Cifre 8
Brani 8
Peso (i) 4
Continuità No
Ciclico No
Distanza minima 4
Distanza massima 8
Lessicografia 1
Complemento 9
  • Estensione del codice 3 di 6: il codice in eccesso di 3 viene talvolta utilizzato anche per il trasferimento dei dati, quindi spesso espanso in un codice a 6 bit per CCITT GT 43 n. 1, dove sono impostati 3 bit su 6.
  • Estensione codice 4 di 8: in alternativa al codice ricetrasmettitore IBM (che è un codice 4 di 8 con una distanza di Hamming di 2), è anche possibile definire un codice di 3 in eccesso 4 di 8 estensione che raggiunge una distanza di Hamming di 4, se devono essere trasferite solo cifre negate.

Guarda anche

Riferimenti