| Classification | 6-bitalphanumericbasic Latin encodings |
|---|---|
| Succeeded by | EBCDIC |
BCD (binary-coded decimal), also calledalphanumeric BCD,alphameric BCD,BCD Interchange Code,[1] orBCDIC,[1] is a family of representations of numerals, uppercase Latin letters, and some special and control characters assix-bit character codes.
Unlike later encodings such asASCII, BCD codes were not standardized. Different computer manufacturers, and even different product lines from the same manufacturer, often had their own variants, and sometimes included unique characters. Other six-bit encodings with completely different mappings, such as someFIELDATA[1] variants orTranscode, are sometimes incorrectly termed BCD.
Many variants of BCD encode the characters '0' through '9' as the corresponding binary values.
Technically,binary-coded decimal describes the encoding of decimal numbers where each decimal digit is represented by a fixed number of bits, usually four.
With the introduction of theIBM card in 1928, IBM created acode[a] capable of representing alphanumeric information,[2] later adopted by other manufacturers. This code represents the numbers 0-9 by a single punch, and uses multiple punches for upper-case letters and special characters.[3] A letter has two punches (zone [12,11,0] + digit [1–9]); most special characters have two or three punches (zone [12,11,0,or none] + digit [2–7] + 8).
The BCD code is the adaptation of the punched card code to a six-bitbinary code by encoding the digit rows (nine rows, plus unpunched) into the low four bits, and the zone rows (three rows, plus unpunched) into the high two bits.[4] The digit zero (a single punch in row 0) is usually handled specially in some way, and the digit code was extended to values 10 through 15 by combining a digit in the range 2–7 with a punch in row 8.IBM applied the termsbinary-coded decimal andBCD to the variations of BCDalphamerics used in most early IBM computers, including theIBM 1620,IBM 1400 series, and non-Decimal Architecture members of theIBM 700/7000 series.
Among the vendors using BCD wereBurroughs,[5]Bull,CDC,[6]IBM,General Electric (the computer division was purchased byHoneywell in 1969),NCR,Siemens, andSperry-UNIVAC.
IBM announced the 8-bitExtended Binary Coded Decimal Interchange Code (EBCDIC), based on BCDIC, in 1964 with the introduction of itsSystem/360 line.
TheRecordmark orRecord mark character (represented as ‡) is a character used to mark the end of arecord.[7] The BCD code for this character is 328 in some BCD variants. The closest Unicode equivalent isU+29E7 ⧧THERMODYNAMIC, but that is not found in many fonts, soU+2021 ‡DOUBLE DAGGER is often used instead. Functionally this corresponds to the EBCDICIRS character (ASCIIRS), X'1E'.
TheGroupmark orGroup mark character (represented as) is a character used to indicate the start or finish of a group of related fields.[8] The BCD code for this character is 778 in some BCD variants. The groupmark was proposed for Unicode standardization in 2015,[9] and was assigned to valueU+2BD2 ⯒GROUP MARK. Functionally this corresponds to the EBCDICIGS character (ASCIIGS), X'1D'. It is now in Unicode 10.0 at this position, but only the Symbola and Unifont fonts support it.
TheWordmark, by contrast, isnot a BCD character. Rather, it is a flag bit used to mark the end of a word on somevariable word length computers such as theIBM 1401.
There are many different versions of the six-bit BCD code. There are three major categories of difference:
In "Spanish speaking countries", the character"Ñ" did not exist in the original system, therefore"@" was chosen by most manufacturers: Bull, NCR, and Control Data, but there was an inconsistency when merging databases to 7-bit ASCII code, for in that coding system the"/" character was chosen, resulting in two different codes for the same character.
The following charts show the numeric values of BCD characters inhexadecimal (base-16) notation, as that most clearly reflects the structure of 4-bit binary coded decimal, plus two extra bits. For example, the code for 'A', in row 3x and column x1, is hexadecimal 31, or binary '11 0001'.
The first versions of BCDIC had 48 characters, as they were based on card punch patterns and the character sets of printers, neither of which encouraged having a power-of-two number of characters.
| x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x | space | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | # | @ | |||
| 1x | / | S | T | U | V | W | X | Y | Z | , | % | |||||
| 2x | - | J | K | L | M | N | O | P | Q | R | $ | * | ||||
| 3x | & | A | B | C | D | E | F | G | H | I | . | ⌑ |
This was based on a 40-character punched card code; the original 37 (10 digits, 26 letters, and blank), plus three commercially important characters added around 1932:[1]: 67 hyphen-minus used for printing credit balances and hyphenated names, theampersand also used in many names and addresses (Procter & Gamble, Mr. & Mrs. Smith), and theasterisk used to overprint unused fields when printingcheques.
Rather than following the IBM 704's storage representation,IBM 1401 followed the tape representation (descended from the 48-character BCD), thus using the all-zero code for blank and the code 10 (0x0A) for the digit zero. It had defined character forms for all possible values, for documentation purposes,[10] but only 48 of the 63 non-blank characters were printable, and there was considerable variation in how the other code values (shaded in the table below) were depicted in practice. Even the other characters varied between different available print chains for theIBM 1403 printer.
| x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x | space | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | # | @ | : | > | √ |
| 1x | ¢ | / | S | T | U | V | W | X | Y | Z | ⧧ | , | % | = | ' | " |
| 2x | - | J | K | L | M | N | O | P | Q | R | ! | $ | * | ) | ; | Δ |
| 3x | & | A | B | C | D | E | F | G | H | I | ? | . | ⌑ | ( | < | ⯒ |
The BCDIC-A Code page was assigned asCode page 353, also known asCP353. Some of the characters in this code page are not in Unicode. (The duplication of '#' can be found in IBM's own documentation and is not a mistake here.[11])
| x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x | space | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | # | @ | : | > | √ |
| 1x | ␢ | / | S | T | U | V | W | X | Y | Z | ⧧ | , | % | γ | \ | ⧻ |
| 2x | - | J | K | L | M | N | O | P | Q | R | ! | # | * | ] | ; | Δ |
| 3x | & | A | B | C | D | E | F | G | H | I | ? | . | ⌑ | [ | < | ⯒ |
At 0x1A is the record mark. At 0x3F is the group mark.
The BCDIC-B Code page was assigned asCode page 354, also known asCP354.[12] Some of the characters in this code page are not in Unicode.
| x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x | space | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | ⊙ | ' | : | > | √ |
| 1x | ␢ | / | S | T | U | V | W | X | Y | Z | ⧧ | , | ( | γ | \ | ⧻ |
| 2x | - | J | K | L | M | N | O | P | Q | R | ! | # | * | ] | ; | Δ |
| 3x | + | A | B | C | D | E | F | G | H | I | ? | . | ) | [ | < | ⯒ |
At 0x1A is the record mark. At 0x3F is the group mark.
PTTC/BCD had 5 options. There were five code pages. They are shown below.The PTTC/BCD Standard Option was assigned asCode page 355, orCP355.
| x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x | space | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | # | ||||
| 1x | @ | / | S | T | U | V | W | X | Y | Z | ⧧ | , | γ | |||
| 2x | - | J | K | L | M | N | O | P | Q | R | < | $ | ||||
| 3x | & | A | B | C | D | E | F | G | H | I | ) | . |
The PTTC/BCD H Option was assigned asCode page 357, orCP357.
| x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x | space | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | = | ||||
| 1x | ' | / | S | T | U | V | W | X | Y | Z | ⧧ | , | ||||
| 2x | - | J | K | L | M | N | O | P | Q | R | ! | $ | ||||
| 3x | + | A | B | C | D | E | F | G | H | I | ? | . |
The PTTC/BCD Correspondence Option was assigned asCode page 358, orCP358.
| x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x | space | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | ' | ||||
| 1x | ! | / | S | T | U | V | W | X | Y | Z | ⧧ | , | ||||
| 2x | - | J | K | L | M | N | O | P | Q | R | < | ; | ||||
| 3x | = | A | B | C | D | E | F | G | H | I | > | . |
The PTTC/BCD Monocase Option was assigned asCode page 359, orCP359.
| x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x | space | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | # | ||||
| 1x | @ | / | S | T | U | V | W | X | Y | Z | , | |||||
| 2x | - | J | K | L | M | N | O | P | Q | R | $ | |||||
| 3x | & | A | B | C | D | E | F | G | H | I | . |
The PTTC/BCD Duocase Option was assigned asCode page 360, orCP360.
| x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x | space | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | # | ||||
| 1x | @ | / | S | T | U | V | W | X | Y | Z | , | |||||
| 2x | - | J | K | L | M | N | O | P | Q | R | $ | |||||
| 3x | & | A | B | C | D | E | F | G | H | I | . |
The IBM 704 reordered the BCDIC code to allow a normal alphabetic collating order internally, with 0 before 1 and A before Z. It could automatically translate between this internal form and the earlier BCDIC when reading and writingmagnetic tapes.[13]: 35
The following table shows the code assignments for theIBM 704 computer. Unassigned code positions appear as blanks.[13]: 35
| x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | # | @ | ||||
| 1x | & | A | B | C | D | E | F | G | H | I | +0 | . | ⌑ | |||
| 2x | - | J | K | L | M | N | O | P | Q | R | −0 | $ | * | |||
| 3x | space | / | S | T | U | V | W | X | Y | Z | ⧧ | , | % |
(+0 and−0 were rarely used characters that corresponded to the punched-card convention of a digit 0 with an overpunched sign in rows 12 or 11.)
The following table shows the code assignments for thetype 716 printer used starting with the IBM 704 computer and through the 7094.[13]: 58 The 704 interface[d] sent virtual punched-card rows to this printer, two words (72 bits) at a time, so the mapping from 6-bit BCD characters was done by software, and was not built into the printer.
| x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x | * | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | + | - | ||||
| 1x | + | A | B | C | D | E | F | G | H | I | . | ⌑ | ||||
| 2x | - | J | K | L | M | N | O | P | Q | R | $ | * | ||||
| 3x | 0 | / | S | T | U | V | W | X | Y | Z | , | % |
This is a repertoire of 45 characters (not counting blank, which is handled specially by the printer), as the characters+,- and* are duplicated.
There was some variation; IBM 704Fortran had a different set of special characters (preserving only the duplicatedminus sign andasterisk,period,comma, anddollar sign).[14]
| x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x | * | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | = | - | ||||
| 1x | + | A | B | C | D | E | F | G | H | I | . | ) | ||||
| 2x | - | J | K | L | M | N | O | P | Q | R | $ | * | ||||
| 3x | 0 | / | S | T | U | V | W | X | Y | Z | , | ( |
A similar code was used for theIBM 709,7090 and7094 successors,[15] but with some of the special characters reassigned:
| x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | = | " | ||||
| 1x | & | A | B | C | D | E | F | G | H | I | +0 | . | ) | |||
| 2x | - | J | K | L | M | N | O | P | Q | R | −0 | $ | * | |||
| 3x | space | / | S | T | U | V | W | X | Y | Z | ± | , | ( |
Below is the table of GE/Honeywell's GBCD code, a variant of BCD.[16]
| x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | [ | # | @ | : | > | ? |
| 1x | space | A | B | C | D | E | F | G | H | I | & | . | ] | ( | < | \ |
| 2x | ^ | J | K | L | M | N | O | P | Q | R | - | $ | * | ) | ; | ' |
| 3x | + | / | S | T | U | V | W | X | Y | Z | _ | , | % | = | " | ! |
The following table shows the code assignments for theBurroughs B5500 computer, sometimes referred to as BIC (Burroughs Interchange Code).[17]
| x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | # | @ | ? | : | > | ≥ |
| 1x | + | A | B | C | D | E | F | G | H | I | . | [ | & | ( | < | ← |
| 2x | × | J | K | L | M | N | O | P | Q | R | $ | * | - | ) | ; | ≤ |
| 3x | space | / | S | T | U | V | W | X | Y | Z | , | % | ≠ | = | ] | " |
{{cite web}}:Missing or empty|title= (help)