Two-out-of-five code

{{Short description|Error-detection code for decimal digits}}

{{Use dmy dates|date=May 2019|cs1-dates=y}}

Image:Barcode2of5example.svg

Image:Correios CEP 22011-080 - Codigo de Barras - PU1JFC.jpg barcode]]

A two-out-of-five code is a constant-weight code that provides exactly ten possible combinations of two bits, and is thus used for representing the decimal digits using five bits. Each bit is assigned a weight, such that the set bits sum to the desired value, with an exception for zero.

According to Federal Standard 1037C:

  • each decimal digit is represented by a binary numeral consisting of five bits of which two are of one kind, called ones, and three are of the other kind, called zeros, and
  • the usual weights assigned to the bit positions are 0-1-2-3-6. However, in this scheme, zero is encoded as binary 01100; strictly speaking the 0-1-2-3-6 previously claimed is just a mnemonic device.{{FS1037C}}

The weights give a unique encoding for most digits, but allow two encodings for 3: 0+3 or 10010 and 1+2 or 01100. The former is used to encode the digit 3, and the latter is used to represent the otherwise unrepresentable zero.

The IBM 7070, IBM 7072, and IBM 7074 computers used this code to represent each of the ten decimal digits in a machine word, although they numbered the bit positions 0-1-2-3-4, rather than with weights. Each word also had a sign flag, encoded using a two-out-of-three code, that could be A Alphanumeric, Minus, or + Plus. When copied to a digit, the three bits were placed in bit positions 0-3-4. (Thus producing the numeric values 3, 6 and 9, respectively.)

A variant is the United States Postal Service POSTNET barcode, used to represent the ZIP Code for automated mail sorting and routing equipment. This uses two tall bars as ones and three short bars as zeros. Here, the weights assigned to the bit positions are 7-4-2-1-0. Again, zero is encoded specially, using the 7+4 combination (binary 11000) that would naturally encode 11. This method was also used in North American telephone multi-frequency and crossbar switching systems.{{cite web|url=http://simplethinking.com/photo/phone/vintage/xbr%20relays.shtml|archive-url=https://web.archive.org/web/20060316134506/http://simplethinking.com/photo/phone/vintage/xbr%20relays.shtml|archive-date=2006-03-16|title=Vintage Telephone Equipment Museum — XBR #5 MTF Relay Equip|website=SimpleThinking.com}}

The USPS Postal Alpha Numeric Encoding Technique (PLANET) uses the same weights, but with the opposite bar-height convention.

The Code 39 barcode uses weights 1-2-4-7-0 (i.e. LSB first, Parity bit last) for the widths of its bars, but it also encodes two bits of extra information in the spacing between bars. The || ||| spacing is used for digits.

The following table represents decimal digits from 0 to 9 in various two-out-of-five code systems:

class="wikitable" style="text-align: center;"
Digit

! Telecommunication
01236

! POSTNET

74210

! PLANET

! Code39
bar widths
12470

1

| 11000

| 00011 Image:POSTNET 1.svg

| ┃┃┃╻╻

| ▮ {{pipe}} {{pipe}} {{pipe}} ▮

2

| 10100

| 00101 Image:POSTNET 2.svg

| ┃┃╻┃╻

| {{pipe}} ▮ {{pipe}} {{pipe}} ▮

3

| 10010

| 00110 Image:POSTNET 3.svg

| ┃┃╻╻┃

| ▮ ▮ {{pipe}} {{pipe}} {{pipe}}

4

| 01010

| 01001 Image:POSTNET 4.svg

| ┃╻┃┃╻

| {{pipe}} {{pipe}} ▮ {{pipe}} ▮

5

| 00110

| 01010 Image:POSTNET 5.svg

| ┃╻┃╻┃

| ▮ {{pipe}} ▮ {{pipe}} {{pipe}}

6

| 10001

| 01100 Image:POSTNET 6.svg

| ┃╻╻┃┃

| {{pipe}} ▮ ▮ {{pipe}} {{pipe}}

7

| 01001

| 10001 Image:POSTNET 7.svg

| ╻┃┃┃╻

| {{pipe}} {{pipe}} {{pipe}} ▮ ▮

8

| 00101

| 10010 Image:POSTNET 8.svg

| ╻┃┃╻┃

| ▮ {{pipe}} {{pipe}} ▮ {{pipe}}

9

| 00011

| 10100 Image:POSTNET 9.svg

| ╻┃╻┃┃

| {{pipe}} ▮ {{pipe}} ▮ {{pipe}}

0

| 01100

| 11000 Image:POSTNET 0.svg

| ╻╻┃┃┃

| {{pipe}} {{pipe}} ▮ ▮ {{pipe}}

colspan=5|
A

| 1––10

!rowspan=3 colspan=3| IBM 707x
Sign flags

| 1––01

+

| 0––11

Digit

! 01234
IBM 707x

!colspan=3|

The requirement that exactly two bits be set is strictly stronger than a parity check; like all constant-weight codes, a two-out-of-five code can detect not only any single-bit error, but any unidirectional error -- cases in which all the individual bit errors are of a single type (all 0→1 or all 1→0).

See also

References

{{reflist|refs=

{{cite book |title=Military Handbook: Encoders - Shaft Angle To Digital |publisher=United States Department of Defense |id=MIL-HDBK-231A |date=1991-09-30 |url=http://everyspec.com/MIL-HDBK/MIL-HDBK-0200-0299/download.php?spec=MIL_HDBK_231A.1809.pdf |access-date=2020-07-25 |url-status=live |archive-url=https://web.archive.org/web/20200725051128/http://everyspec.com/MIL-HDBK/MIL-HDBK-0200-0299/download.php?spec=MIL_HDBK_231A.1809.pdf |archive-date=2020-07-25}} (NB. Supersedes MIL-HDBK-231(AS) (1970-07-01).)

}}

{{Barcodes}}

Category:Barcodes

Category:Computer arithmetic

Category:Telephony signals