Overskydende-3 - Excess-3

Stibitz-kode
Cifre 4
Spor 4
Cifferværdier 8 4  −2  −1
Vægt (er) 1..3
Kontinuitet Ingen
Cyklisk Ingen
Mindste afstand 1
Maksimal afstand 4
Redundans 0,7
Leksikografi 1
Supplement 9

Overskydende-3 , 3-overskydende eller 10-overskydende-3 binær kode (ofte forkortet XS-3 , 3XS eller X3 ), skiftet binær eller Stibitz-kode (efter George Stibitz , der byggede en relæbaseret tilføjemaskine i 1937) er et selvkomplementært binært kodet decimal (BCD) kode og talsystem . Det er en partisk repræsentation . Overskydende 3-kode blev brugt på nogle ældre computere såvel som i kasseapparater og håndholdte bærbare elektroniske regnemaskiner fra 1970'erne, blandt andre anvendelser.

Repræsentation

Forudindtagne koder er en måde at repræsentere værdier med et afbalanceret antal positive og negative tal ved hjælp af et forud specificeret tal N som en forspændingsværdi. Forudindtatte koder (og grå koder ) er ikke-vægtede koder. I overskydende 3-kode er tal repræsenteret som decimaltal, og hvert ciffer er repræsenteret af fire bits som cifferværdien plus 3 ("overskydende" beløb):

  • Det mindste binære tal repræsenterer den mindste værdi ( 0 - overskud ).
  • Det største binære tal repræsenterer den største værdi ( 2 N +1 - overskud - 1 ).
Overskydende 3 og Stibitz-kode
Decimal Overskydende-3 Stibitz BCD 8-4-2-1 Binær 3-af-6 CCITT-
udvidelse
4-af-8 Hamming-
udvidelse
−3 0000 pseudo-tetrade Ikke relevant Ikke relevant Ikke relevant Ikke relevant
−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 Ikke relevant Ikke relevant
11 1110 pseudo-tetrade pseudo-tetrade 1011
12 1111 pseudo-tetrade pseudo-tetrade 1100
13 Ikke relevant Ikke relevant pseudo-tetrade 1101
14 pseudo-tetrade 1110
15 pseudo-tetrade 1111

For at kode et tal som f.eks. 127 koder man simpelthen hvert decimaltal som ovenfor, hvilket giver (0100, 0101, 1010).

Overskydende 3 aritmetik bruger forskellige algoritmer end normale ikke-forudindtagne BCD eller binære positionssystemnumre . Efter tilføjelse af to overskydende 3 cifre er råsummen overskydende 6. For eksempel efter at have tilføjet 1 (0100 i overskud-3) og 2 (0101 i overskridelse-3), ser summen ud som 6 (1001 i overskridelse-3) i stedet for 3 (0110 i overskridelse-3). For at rette op på dette problem er det efter at have tilføjet to cifre nødvendigt at fjerne den ekstra forspænding ved at trække binært 0011 (decimal 3 i objektiv binær), hvis det resulterende ciffer er mindre end decimal 10, eller trække binært 1101 (decimal 13 i objektiv binær), hvis der er opstået et overløb (carry). (I 4-bit binær svarer subtraktion af binær 1101 til at tilføje 0011 og omvendt.)

Motivering

Den primære fordel ved overskydende-3-kodning i forhold til ikke-forudindtaget kodning er, at et decimaltal kan være nines 'suppleret (til subtraktion) så let som et binært tal kan være et' suppleret : bare ved at invertere alle bits. Også når summen af ​​to overskydende 3 cifre er større end 9, vil bærebiten til en 4-bit-adderer blive sat højt. Dette virker, fordi en "overskydende" værdi på 6 efter tilføjelse af to cifre resulterer i summen. Da et 4-bit heltal kun kan rumme værdierne 0 til 15, betyder et overskud på 6, at enhver sum over 9 vil løbe over (producere en udførelse).

En anden fordel er, at koderne 0000 og 1111 ikke bruges til noget ciffer. En fejl i en hukommelse eller en grundlæggende transmissionslinje kan resultere i disse koder. Det er også sværere at skrive nul-mønsteret til magnetiske medier.

Eksempel

BCD 8-4-2-1 til overskydende-3 konverteringseksempel i 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

Udvidelser

3-af-6 udvidelse
Cifre 6
Spor 6
Vægt (er) 3
Kontinuitet Ingen
Cyklisk Ingen
Mindste afstand 2
Maksimal afstand 6
Leksikografi 1
Supplement (9)
4-af-8 udvidelse
Cifre 8
Spor 8
Vægt (er) 4
Kontinuitet Ingen
Cyklisk Ingen
Mindste afstand 4
Maksimal afstand 8
Leksikografi 1
Supplement 9
  • 3-af-6-kodeudvidelse: Overskydende-3-koden bruges undertiden også til dataoverførsel og udvides derefter ofte til en 6-bit-kode pr. CCITT GT 43 nr. 1, hvor 3 ud af 6 bit er indstillet.
  • 4-af-8-kodeudvidelse: Som et alternativ til IBM- transceiverkoden (som er en 4-af-8-kode med en Hamming-afstand på 2) er det også muligt at definere en 4-af-8 overskydende-3-kode udvidelse, der opnår en Hamming-afstand på 4, hvis kun denary cifre skal overføres.

Se også

Referencer