Excess-3, 3-excess[1][2][3] or 10-excess-3binary 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).
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 algorithms than normal non-biased BCD or binary positional system numbers. After adding two excess-3 digits, the raw sum is excess-6. For instance, after adding 1 (0100 in excess-3) and 2 (0101 in excess-3), the sum looks like 6 (1001 in excess-3) instead of 3 (0110 in excess-3). To correct this problem, after adding two digits, it is necessary to remove the extra bias by subtracting binary 0011 (decimal 3 in unbiased binary) if the resulting digit is less than decimal 10, or subtracting binary 1101 (decimal 13 in unbiased binary) if an overflow (carry) has occurred. (In 4-bit binary, subtracting binary 1101 is equivalent to adding 0011 and vice versa.)[14]
Advantage
The primary advantage of excess-3 coding over non-biased coding is that a decimal number can be nines' complemented[1] (for subtraction) as easily as a binary number can be ones' complemented: just by inverting all bits.[1] Also, when the sum of two excess-3 digits is greater than 9, the carry bit of a 4-bit adder will be set high. This works because, after adding two digits, an "excess" value of 6 results in the sum. Because a 4-bit integer can only hold values 0 to 15, an excess of 6 means that any sum over 9 will overflow (produce a carry-out).
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]
entitybcd8421xs3isport(a:instd_logic;b:instd_logic;c:instd_logic;d:instd_logic;an:bufferstd_logic;bn:bufferstd_logic;cn:bufferstd_logic;dn:bufferstd_logic;w:outstd_logic;x:outstd_logic;y:outstd_logic;z:outstd_logic);endentitybcd8421xs3;architecturedataflowofbcd8421xs3isbeginan<=nota;bn<=notb;cn<=notc;dn<=notd;w<=(anandbandd)or(aandbnandcn)or(anandbandcanddn);x<=(anandbnandd)or(anandbnandcanddn)or(anandbandcnanddn)or(aandbnandcnandd);y<=(anandcnanddn)or(anandcandd)or(aandbnandcnanddn);z<=(ananddn)or(aandbnandcnanddn);endarchitecturedataflow;-- of bcd8421xs3
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 CCITT GT 43 No. 1, where 3 out of 6 bits are set.[13][1]
4-of-8 code extension: As an alternative to the IBMtransceiver 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]
^ abSteinbuch, Karl W.; Weber, Wolfgang; Heinemann, Traute, eds. (1974) [1967]. Taschenbuch der Informatik – Band II – Struktur und Programmierung von EDV-Systemen (in German). Vol. 2 (3 ed.). Berlin, Germany: Springer Verlag. pp. 98–100. ISBN3-540-06241-6. LCCN73-80607. {{cite book}}: |work= ignored (help)
^Richards, Richard Kohler (1955). Arithmetic Operations in Digital Computers. New York, USA: van Nostrand. p. 182.
^Schmid, Hermann (1983) [1974]. Decimal Computation (1 (reprint) ed.). Malabar, Florida, USA: Robert E. Krieger Publishing Company. p. 11. ISBN0-89874-318-4. Retrieved 2016-01-03. (NB. At least some batches of this reprint edition were misprints with defective pages 115–146.)
^Dokter, Folkert; Steinhauer, Jürgen (1975) [1969]. Digitale Elektronik in der Meßtechnik und Datenverarbeitung: Theoretische Grundlagen und Schaltungstechnik. Philips Fachbücher (in German). Vol. I (improved and extended 5th ed.). Hamburg, Germany: Deutsche Philips GmbH. pp. 48, 51, 53, 58, 61, 73. ISBN3-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.)
^ abMietke, 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.