Excess-3
Stibitz code | ||
---|---|---|
Digits | 4 Lexicography 1[1] | |
Complement | 9[1] | |
Excess-3, 3-excess[1][2][3] or 10-excess-3 binary code (often abbreviated as XS-3,[4] 3XS[1] or X3[5][6]), shifted binary[7] or Stibitz code[1][2][8][9] (after George Stibitz,[10] who built a relay-based adding machine in 1937[11][12]) is a self-complementary binary-coded decimal (BCD) code and numeral system. It is a biased representation. Excess-3 code was used on some older computers as well as in cash registers and hand-held portable electronic calculators of the 1970s, among other uses.
Representation
Biased codes are a way to represent values with a balanced number of positive and negative numbers using a pre-specified number N as a biasing value. Biased codes (and Gray codes) are non-weighted codes. In excess-3 code, numbers are represented as decimal digits, and each digit is represented by four bits as the digit value plus 3 (the "excess" amount):
- The smallest binary number represents the smallest value (0 − excess).
- The greatest binary number represents the largest value (2N+1 − excess − 1).
Decimal | Excess-3 | Stibitz | BCD 8-4-2-1
|
Binary | 3-of-6 | 4-of-8 Hamming extension[1] |
---|---|---|---|---|---|---|
−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 |
To encode a number such as 127, one simply encodes each of the decimal digits as above, giving (0100, 0101, 1010).
Excess-3 arithmetic uses different
Motivation
The primary advantage of excess-3 coding over non-biased coding is that a decimal number can be
Another advantage is that the codes 0000 and 1111 are not used for any digit. A fault in a memory or basic transmission line may result in these codes. It is also more difficult to write the zero pattern to magnetic media.[1][15][11]
Example
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
Extensions
3-of-6 extension | ||
---|---|---|
Digits | 6 Lexicography 1[1] | |
Complement | (9)[1] | |
4-of-8 extension | ||
---|---|---|
Digits | 8 Lexicography 1[1] | |
Complement | 9[1] | |
- 3-of-6 code extension: The excess-3 code is sometimes also used for data transfer, then often expanded to a 6-bit code per
- 4-of-8 code extension: As an alternative to the IBM transceiver code[16] (which is a 4-of-8 code with a Hamming distance of 2),[1] it is also possible to define a 4-of-8 excess-3 code extension achieving a Hamming distance of 4, if only denary digits are to be transferred.[1]
See also
- Offset binary, excess-N, biased representation
- Excess-128
- Excess-Gray code
- Shifted Gray code
- Gray code
- m-of-n code
- Aiken code
References
- ^ LCCN 62-14511.
- ^ )
- van Nostrand. p. 182.
- The Institute of Radio Engineers, Inc.: 47–57. Session 19: Information Theory III - Speed and Computation. Retrieved 2020-05-22. (11 pages)
- ISBN 0-471-76180-X. Retrieved 2016-01-03.
- misprintswith defective pages 115–146.)
- LCCN 56-10331. (10+228 pages)
- ] (270 pages) (NB. This is based on a translation of volume I of the two-volume German edition.)
- ISBN 3-87145-272-6. (xii+327+3 pages) (NB. The German edition of volume I was published in 1969, 1971, two editions in 1972, and 1975. Volume II was published in 1970, 1972, 1973, and 1975.)
- Stibitz, George Robert (1954-02-09) [1941-04-19]. "Complex Computer". Patent US2668661A. Retrieved 2020-05-24. [1](102 pages)
- ^ a b Mietke, Detlef (2017) [2015]. "Binäre Codices". Informations- und Kommunikationstechnik (in German). Berlin, Germany. Exzeß-3-Code mit Additions- und Subtraktionsverfahren. Archived from the original on 2017-04-25. Retrieved 2017-04-25.
- ISBN 067152397X.
- ^ )
- ISBN 0-07-027363-4.
- S2CID 51666209. Paper No. 55-719.
- ^ IBM (July 1957). 65 Data Transceiver / 66 Printing Data Receiver.