EBCDIC, Extended Binary Coded Decimal Interchange Code, was developed in 1963 by IBM as an extension to the older Binary Coded Decimal (BCD) standard. BCD encodes the 10 digits of the standard counting system using 4 binary counters, or bits, where an individual bit can be either a 1 or a 0.
BCD for Numeric Characters
Digit | EBCDIC |
0 | 0000 |
1 | 0001 |
2 | 0010 |
3 | 0011 |
4 | 0100 |
5 | 0101 |
6 | 0110 |
7 | 0111 |
8 | 1000 |
9 | 1001 |
By establishing BCD as a standard, IBM allowed users to move shared data between computers with the use of punch cards. The roots of BCD lay, in fact, in the row and column layout of IBM's original computer punch cards. With EBCDIC, IBM extended the approach to 8 bits, allowing encoding not only of digits, but also of upper and lower case letters, formatting codes such as headers and carriage returns, and basic communication controls such as Request, Acknowledge, and Bell. This allowed users of IBM's mainframe computers to share not only data, but actual programming code as well.
EBCDIC is eight bits, or one byte, wide. Each byte consists of two nibbles, each four bits wide. The first four bits define the class of character, while the second nibble defines the specific character inside that class. For example, setting the first nibble to all-ones, 1111, defines the character as a number, and the second nibble defines which number is encoded.
In recent years, EBCDIC has been expanded to 16- and 32-bit variants to allow for representation of large, non-latin character sets. Each EBCDIC variant is known as a codepage, identified by its Coded Character Set Identifier, or CCSID. EBCDIC codepages have been created for a number of major writing scripts, including such complex ones as Chinese, Korean and Japanese.
All IBM mainframe computers, even the most recent models, continue to support EBCDIC so that legacy applications can be run without modification.