text:
Binary-coded decimal
From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
"BCD code" redirects here. For BCD character sets, see BCD (character encoding).
A binary clock might use LEDs to express binary values. In this clock, each column of LEDs shows a binary-coded decimal numeral of the traditional sexagesimal time.
In computing and electronic systems, binary-coded decimal (BCD) is a class of binary encodings of decimal numbers where each decimal digit is represented by a fixed number of bits, usually four or eight. Special bit patterns are sometimes used for a sign or for other indications (e.g., error or overflow).
In byte-oriented systems (i.e. most modern computers), the term unpacked BCD[1] usually implies a full byte for each digit (often including a sign), whereas packed BCD typically encodes two decimal digits within a single byte by taking advantage of the fact that four bits are enough to represent the range 0 to 9. The precise 4-bit encoding may vary however, for technical reasons, see Excess-3 for instance. The ten states representing a BCD decimal digit are sometimes called tetrades (for the nibble typically needed to hold them also known as tetrade) with those don't care-states unused named pseudo-tetrad(e)s (de)[2][3][4][5][6] or pseudo-decimal digit[7][8]).[nb 1]
BCD's main virtue is its more accurate representation and rounding of decimal quantities as well as an ease of conversion into human-readable representations, in comparison to binary positional systems. BCD's principal drawbacks are a small increase in the complexity of the circuits needed to implement basic arithmetics and a slightly less dense storage.
BCD was used in many early decimal computers, and is implemented in the instruction set of machines such as the IBM System/360 series and its descendants, Digital Equipment Corporation's VAX and the Motorola 68000-series processors. Although BCD per se is not as widely used as in the past and is no longer implemented in newer computers' instruction sets (such as ARM; x86 does not support its BCD instructions in long mode any more), decimal fixed-point and floating-point formats are still important and continue to be used in financial, commercial, and industrial computing, where subtle conversion and fractional rounding errors that are inherent in floating point binary representations cannot be tolerated.[9]
Contents
[hide]
1 Basics
2 BCD in electronics
3 Packed BCD
3.1 Fixed-point packed decimal
3.2 Higher-density encodings
4 Zoned decimal
4.1 EBCDIC zoned decimal conversion table
4.2 Fixed-point zoned decimal
5 IBM and BCD
6 Other computers and BCD
7 Addition with BCD
8 Subtraction with BCD
9 Background
10 Legal history
11 Comparison with pure binary
11.1 Advantages
11.2 Disadvantages
12 Application
13 Representational variations
13.1 Signed variations
13.2 Telephony Binary Coded Decimal (TBCD)
14 Alternative encodings
15 See also
16 Notes
17 References
18 Further reading
19 External links
Basics[edit]
BCD takes advantage of the fact that any one decimal numeral can be represented by a four bit pattern. The most obvious way of encoding digits is "natural BCD" (NBCD), where each decimal digit is represented by its corresponding four-bit binary value, as shown in the following table. This is also called "8421" encoding.
Decimal digit
BCD
8
4
2
1
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1
Other encodings are also used, including so-called "4221" and "7421"—named after the weighting used for the bits—and "Excess-3".[10] For example, the BCD digit 6, '0110'b in 8421 notation, is '1100'b in 4221 (two encodings are possible), '0110'b in 7421, and '1001'b (6+3=9) in excess-3.
As most computers deal with data in 8-bit bytes, it is possible to use one of the following methods to encode a BCD number:
Unpacked: Each numeral is encoded into one byte, with four bits representing the numeral and the remaining bits having no significance.
Packed: Two numerals are encoded into a single byte, with one numeral in the least significant nibble (bits 0 through 3) and the other numeral in the most significant nibble (bits 4 through 7).
As an example, encoding the decimal number 91 using unpacked BCD results in the following binary pattern of two bytes:
 Decimal:          9          1
 Binary :  0000 1001  0000 0001

In packed BCD, the same number would fit into a single byte:
 Decimal:     9    1
 Binary :  1001 0001

Hence the numerical range for one unpacked BCD byte is zero through nine inclusive, whereas the range for one packed BCD is zero through ninety-nine inclusive.
To represent numbers larger than the range of a single byte any number of contiguous bytes may be used. For example, to represent the decimal number 12345 in packed BCD, using big-endian format, a program would encode as follows:
 Decimal:          1     2    3     4    5
 Binary :  0000 0001  0010 0011  0100 0101

Note that the most significant nibble of the most significant byte is zero, implying that the number is in actuality 012345. Also note how packed BCD is more efficient in storage usage as compared to unpacked BCD; encoding the same number (with the leading zero) in unpacked format would consume twice the storage.
Shifting and masking operations are used to pack or unpack a packed BCD digit. Other logical operations are used to convert a numeral to its equivalent bit pattern or reverse the process.
BCD in electronics[edit]
This section needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed. (January 2018) (Learn how and when to remove this template message)
This section relies too much on references to primary sources. Please improve this section by adding secondary or tertiary sources. (January 2018) (Learn how and when to remove this template message)
BCD is very common in electronic systems where a numeric value is to be displayed, especially in systems consisting solely of digital logic, and not containing a microprocessor. By employing BCD, the manipulation of numerical data for display can be greatly simplified by treating each digit as a separate single sub-circuit. This matches much more closely the physical reality of display hardware—a designer might choose to use a series of separate identical seven-segment displays to build a metering circuit, for example. If the numeric quantity were stored and manipulated as pure binary, interfacing to such a display would require complex circuitry. Therefore, in cases where the calculations are relatively simple, working throughout with BCD can lead to a simpler overall system than converting to and from binary. Most pocket calculators do all their calculations in BCD.
The same argument applies when hardware of this type uses an embedded microcontroller or other small processor. Often, smaller code results when representing numbers internally in BCD format, since a conversion from or to binary representation can be expensive on such limited processors. For these applications, some small processors feature BCD arithmetic modes, which assist when writing routines that manipulate BCD quantities.[11][12]
Packed BCD[edit]
In packed BCD (or simply packed decimal), each of the two nibbles of each byte represent a decimal digit. Packed BCD has been in use since at least the 1960s and is implemented in all IBM mainframe hardware since then. Most implementations are big endian, i.e. with the more significant digit in the upper half of each byte, and with the leftmost byte (residing at the lowest memory address) containing the most significant digits of the packed decimal value. The lower nibble of the rightmost byte is usually used as the sign flag, although some unsigned representations lack a sign flag. As an example, a 4-byte value consists of 8 nibbles, wherein the upper 7 nibbles store the digits of a 7-digit decimal value and the lowest nibble indicates the sign of the decimal integer value.
Standard sign values are 1100 (hex C) for positive (+) and 1101 (D) for negative (−). This convention comes from the zone field for EBCDIC characters and the signed overpunch representation. Other allowed signs are 1010 (A) and 1110 (E) for positive and 1011 (B) for negative. IBM System/360 processors will use the 1010 (A) and 1011 (B) signs if the A bit is set in the PSW, for the ASCII-8 standard that never passed. Most implementations also provide unsigned BCD values with a sign nibble of 1111 (F).[13][14][15] ILE RPG uses 1111 (F) for positive and 1101 (D) for negative.[16] These match the EBCDIC zone for digits without a sign overpunch. In packed BCD, the number 127 is represented by 0001 0010 0111 1100 (127C) and −127 is represented by 0001 0010 0111 1101 (127D). Burroughs systems used 1101 (D) for negative, and any other value is considered a positive sign value (the processors will normalize a positive sign to 1100 (C)).
Sign
Digit
BCD
8 4 2 1
Sign
Notes
A
1 0 1 0 +
B
1 0 1 1 −
C
1 1 0 0 + Preferred
D
1 1 0 1 − Preferred
E
1 1 1 0 +
F
1 1 1 1 + Unsigned
No matter how many bytes wide a word is, there are always an even number of nibbles because each byte has two of them. Therefore, a word of n bytes can contain up to (2n)−1 decimal digits, which is always an odd number of digits. A decimal number with d digits requires 1/2(d+1) bytes of storage space.
For example, a 4-byte (32-bit) word can hold seven decimal digits plus a sign, and can represent values ranging from ±9,999,999. Thus the number −1,234,567 is 7 digits wide and is encoded as:
0001 0010 0011 0100 0101 0110 0111 1101
1 2 3 4 5 6 7 −

(Note that, like character strings, the first byte of the packed decimal – with the most significant two digits – is usually stored in the lowest address in memory, independent of the endianness of the machine.)
In contrast, a 4-byte binary two's complement integer can represent values from −2,147,483,648 to +2,147,483,647.
While packed BCD does not make optimal use of storage (about one-sixth of the memory used is wasted), conversion to ASCII, EBCDIC, or the various encodings of Unicode is still trivial, as no arithmetic operations are required. The extra storage requirements are usually offset by the need for the accuracy and compatibility with calculator or hand calculation that fixed-point decimal arithmetic provides. Denser packings of BCD exist which avoid the storage penalty and also need no arithmetic operations for common conversions.
Packed BCD is supported in the COBOL programming language as the "COMPUTATIONAL-3" (an IBM extension adopted by many other compiler vendors) or "PACKED-DECIMAL" (part of the 1985 COBOL standard) data type. It is supported in PL/I as "FIXED DECIMAL". Besides the IBM System/360 and later compatible mainframes, packed BCD is implemented in the native instruction set of the original VAX processors from Digital Equipment Corporation and some models of the SDS Sigma series mainframes, and is the native format for the Burroughs Corporation Medium Systems line of mainframes (descended from the 1950s Electrodata 200 series).
Ten's complement representations for negative numbers offer an alternative approach to encoding the sign of packed (and other) BCD numbers. In this case, positive numbers always have a most significant digit between 0 and 4 (inclusive), while negative numbers are represented by the 10's complement of the corresponding positive number. As a result, this system allows for, a 32-bit packed BCD numbers to range from -50,000,000 to 49,999,999, and -1 is represented as 99999999. (As with two's complement binary numbers, the range is not symmetric about zero.)
Fixed-point packed decimal[edit]
Fixed-point decimal numbers are supported by some programming languages (such as COBOL, PL/I and Ada). These languages allow the programmer to specify an implicit decimal point in front of one of the digits. For example, a packed decimal value encoded with the bytes 12 34 56 7C represents the fixed-point value +1,234.567 when the implied decimal point is located between the 4th and 5th digits:
12 34 56 7C
12 34.56 7+

The decimal point is not actually stored in memory, as the packed BCD storage format does not provide for it. Its location is simply known to the compiler and the generated code acts accordingly for the various arithmetic operations.
Higher-density encodings[edit]
If a decimal digit requires four bits, then three decimal digits require 12 bits. However, since 210 (1,024) is greater than 103 (1,000), if three decimal digits are encoded together, only 10 bits are needed. Two such encodings are Chen–Ho encoding and densely packed decimal (DPD). The latter has the advantage that subsets of the encoding encode two digits in the optimal seven bits and one digit in four bits, as in regular BCD.
Zoned decimal[edit]
Some implementations, for example IBM mainframe systems, support zoned decimal numeric representations. Each decimal digit is stored in one byte, with the lower four bits encoding the digit in BCD form. The upper four bits, called the "zone" bits, are usually set to a fixed value so that the byte holds a character value corresponding to the digit. EBCDIC systems use a zone value of 1111 (hex F); this yields bytes in the range F0 to F9 (hex), which are the EBCDIC codes for the characters "0" through "9". Similarly, ASCII systems use a zone value of 0011 (hex 3), giving character codes 30 to 39 (hex).
For signed zoned decimal values, the rightmost (least significant) zone nibble holds the sign digit, which is the same set of values that are used for signed packed decimal numbers (see above). Thus a zoned decimal value encoded as the hex bytes F1 F2 D3 represents the signed decimal value −123:
F1 F2 D3
1 2 −3

EBCDIC zoned decimal conversion table[edit]
BCD Digit
Hexadecimal
EBCDIC Character
0+ C0 A0 E0 F0 { (*) \ (*) 0
1+ C1 A1 E1 F1 A ~ (*) 1
2+ C2 A2 E2 F2 B s S 2
3+ C3 A3 E3 F3 C t T 3
4+ C4 A4 E4 F4 D u U 4
5+ C5 A5 E5 F5 E v V 5
6+ C6 A6 E6 F6 F w W 6
7+ C7 A7 E7 F7 G x X 7
8+ C8 A8 E8 F8 H y Y 8
9+ C9 A9 E9 F9 I z Z 9
0− D0 B0 } (*) ^ (*)
1− D1 B1 J
2− D2 B2 K
3− D3 B3 L
4− D4 B4 M
5− D5 B5 N
6− D6 B6 O
7− D7 B7 P
8− D8 B8 Q
9− D9 B9 R
(*) Note: These characters vary depending on the local character code page setting.
Fixed-point zoned decimal[edit]
Some languages (such as COBOL and PL/I) directly support fixed-point zoned decimal values, assigning an implicit decimal point at some location between the decimal digits of a number. For example, given a six-byte signed zoned decimal value with an implied decimal point to the right of the fourth digit, the hex bytes F1 F2 F7 F9 F5 C0 represent the value +1,279.50:
F1 F2 F7 F9 F5 C0
1 2 7 9. 5 +0

IBM and BCD[edit]
Main article: BCDIC
IBM used the terms Binary-Coded Decimal Interchange Code (BCDIC, sometimes just called BCD), for 6-bit alphanumeric codes that represented numbers, upper-case letters and special characters. Some variation of BCDIC alphamerics is used in most early IBM computers, including the IBM 1620, IBM 1400 series, and non-Decimal Architecture members of the IBM 700/7000 series.
The IBM 1400 series are character-addressable machines, each location being six bits labeled B, A, 8, 4, 2 and 1, plus an odd parity check bit (C) and a word mark bit (M). For encoding digits 1 through 9, B and A are zero and the digit value represented by standard 4-bit BCD in bits 8 through 1. For most other characters bits B and A are derived simply from the "12", "11", and "0" "zone punches" in the punched card character code, and bits 8 through 1 from the 1 through 9 punches. A "12 zone" punch set both B and A, an "11 zone" set B, and a "0 zone" (a 0 punch combined with any others) set A. Thus the letter A, which is (12,1) in the punched card format, is encoded (B,A,1). The currency symbol $, (11,8,3) in the punched card, was encoded in memory as (B,8,2,1). This allows the circuitry to convert between the punched card format and the internal storage format to be very simple with only a few special cases. One important special case is digit 0, represented by a lone 0 punch in the card, and (8,2) in core memory.[17]
The memory of the IBM 1620 is organized into 6-bit addressable digits, the usual 8, 4, 2, 1 plus F, used as a flag bit and C, an odd parity check bit. BCD alphamerics are encoded using digit pairs, with the "zone" in the even-addressed digit and the "digit" in the odd-addressed digit, the "zone" being related to the 12, 11, and 0 "zone punches" as in the 1400 series. Input/Output translation hardware converted between the internal digit pairs and the external standard 6-bit BCD codes.
In the Decimal Architecture IBM 7070, IBM 7072, and IBM 7074 alphamerics are encoded using digit pairs (using two-out-of-five code in the digits, not BCD) of the 10-digit word, with the "zone" in the left digit and the "digit" in the right digit. Input/Output translation hardware converted between the internal digit pairs and the external standard 6-bit BCD codes.
With the introduction of System/360, IBM expanded 6-bit BCD alphamerics to 8-bit EBCDIC, allowing the addition of many more characters (e.g., lowercase letters). A variable length Packed BCD numeric data type is also implemented, providing machine instructions that perform arithmetic directly on packed decimal data.
On the IBM 1130 and 1800, packed BCD is supported in software by IBM's Commercial Subroutine Package.
Today, BCD data is still heavily used in IBM processors and databases, such as IBM DB2, mainframes, and Power6. In these products, the BCD is usually zoned BCD (as in EBCDIC or ASCII), Packed BCD (two decimal digits per byte), or "pure" BCD encoding (one decimal digit stored as BCD in the low four bits of each byte). All of these are used within hardware registers and processing units, and in software. To convert packed decimals in EBCDIC table unloads to readable numbers, you can use the OUTREC FIELDS mask of the JCL utility DFSORT.[18]
Other computers and BCD[edit]
The Digital Equipment Corporation VAX-11 series includes instructions that can perform arithmetic directly on packed BCD data and convert between packed BCD data and other integer representations.[15] The VAX's packed BCD format is compatible with that on IBM System/360 and IBM's later compatible processors. The MicroVAX and later VAX implementations dropped this ability from the CPU but retained code compatibility with earlier machines by implementing the missing instructions in an operating system-supplied software library. This is invoked automatically via exception handling when the no longer implemented instructions are encountered, so that programs using them can execute without modification on the newer machines.
The Intel x86 architecture supports a unique 18-digit (ten-byte) BCD format that can be loaded into and stored from the floating point registers, and computations can be performed there.[19]
The Motorola 68000 series had BCD instructions.[20]
In more recent computers such capabilities are almost always implemented in software rather than the CPU's instruction set, but BCD numeric data is still extremely common in commercial and financial applications. There are tricks for implementing packed BCD and zoned decimal add or subtract operations using short but difficult to understand sequences of word-parallel logic and binary arithmetic operations.[21] For example, the following code (written in C) computes an unsigned 8-digit packed BCD add using 32-bit binary operations:
uint32_t BCDadd(uint32_t a,uint32_t b) { uint32_t t1, t2; // unsigned 32-bit intermediate values t1 = a + 0x06666666; t2 = t1 ^ b; // sum without carry propagation t1 = t1 + b; // provisional sum t2 = t1 ^ t2; // all the binary carry bits t2 = ~t2 & 0x11111110; // just the BCD carry bits t2 = (t2 >> 2) | (t2 >> 3); // correction return t1 - t2; // corrected BCD sum }
Addition with BCD[edit]
It is possible to perform addition in BCD by first adding in binary, and then converting to BCD afterwards. Conversion of the simple sum of two digits can be done by adding 6 (that is, 16 – 10) when the five-bit result of adding a pair of digits has a value greater than 9. For example:
1001 + 1000 = 10001
   9 +    8 =    17

Note that 10001 is the binary, not decimal, representation of the desired result. Also note that it cannot fit in a 4-bit number. In BCD as in decimal, there cannot exist a value greater than 9 (1001) per digit. To correct this, 6 (0110) is added to that sum and then the result is treated as two nibbles:
10001 + 0110 = 00010111 => 0001 0111
   17 +    6 =       23       1    7

The two nibbles of the result, 0001 and 0111, correspond to the digits "1" and "7". This yields "17" in BCD, which is the correct result.
This technique can be extended to adding multiple digits by adding in groups from right to left, propagating the second digit as a carry, always comparing the 5-bit result of each digit-pair sum to 9. Some CPUs provide a half-carry flag to facilitate BCD arithmetic adjustments following binary addition and subtraction operations.
Subtraction with BCD[edit]
Subtraction is done by adding the ten's complement of the subtrahend. To represent the sign of a number in BCD, the number 0000 is used to represent a positive number, and 1001 is used to represent a negative number. The remaining 14 combinations are invalid signs. To illustrate signed BCD subtraction, consider the following problem: 357 − 432.
In signed BCD, 357 is 0000 0011 0101 0111. The ten's complement of 432 can be obtained by taking the nine's complement of 432, and then adding one. So, 999 − 432 = 567, and 567 + 1 = 568. By preceding 568 in BCD by the negative sign code, the number −432 can be represented. So, −432 in signed BCD is 1001 0101 0110 1000.
Now that both numbers are represented in signed BCD, they can be added together:
  0000 0011 0101 0111
     0    3    5    7
+ 1001 0101 0110 1000
9 5 6 8 = 1001 1000 1011 1111 9 8 11 15

Since BCD is a form of decimal representation, several of the digit sums above are invalid. In the event that an invalid entry (any BCD digit greater than 1001) exists, 6 is added to generate a carry bit and cause the sum to become a valid entry. The reason for adding 6 is that there are 16 possible 4-bit BCD values (since 24 = 16), but only 10 values are valid (0000 through 1001). So adding 6 to the invalid entries results in the following:
  1001 1000 1011 1111
     9    8   11   15
+ 0000 0000 0110 0110
0 0 6 6 = 1001 1001 0010 0101 9 9 2 5

Thus the result of the subtraction is 1001 1001 0010 0101 (−925). To check the answer, note that the first digit is 9, which means negative. This seems to be correct, since 357 − 432 should result in a negative number. To check the rest of the digits, represent them in decimal. 1001 0010 0101 is 925. The ten's complement of 925 is 1000 − 925 = 999 − 925 + 1 = 074 + 1 = 75, so the calculated answer is −75. To check, perform standard subtraction to verify that 357 − 432 is −75.
Note that in the event that there are a different number of nibbles being added together (such as 1053 − 122), the number with the fewest digits must first be padded with zeros before taking the ten's complement or subtracting. So, with 1053 − 122, 122 would have to first be represented as 0122, and the ten's complement of 0122 would have to be calculated.
Background[edit]
The binary-coded decimal scheme described in this article is the most common encoding, but there are many others. The method here can be referred to as Simple Binary-Coded Decimal (SBCD) or BCD 8421. In the headers to the table, the '8 4 2 1', indicates the weight of each bit shown; note that in the fifth column, "BCD 8 4 −2 −1", two of the weights are negative. Both ASCII and EBCDIC character codes for the digits are examples of zoned BCD, and are also shown in the table.
The following table represents decimal digits from 0 to 9 in various BCD systems:

Digit
BCD
8 4 2 1
Stibitz Code or Excess-3
Aiken-Code or BCD
2 4 2 1
BCD
8 4 −2 −1
IBM 702, IBM 705, IBM 7080, IBM 1401 8 4 2 1
ASCII 0000 8421
EBCDIC 0000 8421
0
0000 0011 0000 0000 1010 0011 0000 1111 0000
1
0001 0100 0001 0111 0001 0011 0001 1111 0001
2
0010 0101 0010 0110 0010 0011 0010 1111 0010
3
0011 0110 0011 0101 0011 0011 0011 1111 0011
4
0100 0111 0100 0100 0100 0011 0100 1111 0100
5
0101 1000 1011 1011 0101 0011 0101 1111 0101
6
0110 1001 1100 1010 0110 0011 0110 1111 0110
7
0111 1010 1101 1001 0111 0011 0111 1111 0111
8
1000 1011 1110 1000 1000 0011 1000 1111 1000
9
1001 1100 1111 1111 1001 0011 1001 1111 1001
Legal history[edit]
In the 1972 case Gottschalk v. Benson, the U.S. Supreme Court overturned a lower court decision which had allowed a patent for converting BCD encoded numbers to binary on a computer. This was an important case in determining the patentability of software and algorithms.
Comparison with pure binary[edit]
Advantages[edit]
Many non-integral values, such as decimal 0.2, have an infinite place-value representation in binary (.001100110011...) but have a finite place-value in binary-coded decimal (0.0010). Consequently, a system based on binary-coded decimal representations of decimal fractions avoids errors representing and calculating such values.
Scaling by a factor of 10 (or a power of 10) is simple; this is useful when a decimal scaling factor is needed to represent a non-integer quantity (e.g., in financial calculations)
Rounding at a decimal digit boundary is simpler. Addition and subtraction in decimal does not require rounding.
Alignment of two decimal numbers (for example 1.3 + 27.08) is a simple, exact, shift.
Conversion to a character form or for display (e.g., to a text-based format such as XML, or to drive signals for a seven-segment display) is a simple per-digit mapping, and can be done in linear (O(n)) time. Conversion from pure binary involves relatively complex logic that spans digits, and for large numbers no linear-time conversion algorithm is known (see Binary numeral system).
Disadvantages[edit]
Some operations are more complex to implement. Adders require extra logic to cause them to wrap and generate a carry early. 15–20 percent more circuitry is needed for BCD add compared to pure binary.[citation needed] Multiplication requires the use of algorithms that are somewhat more complex than shift-mask-add (a binary multiplication, requiring binary shifts and adds or the equivalent, per-digit or group of digits is required)
Standard BCD requires four bits per digit, roughly 20 percent more space than a binary encoding (the ratio of 4 bits to log210 bits is 1.204). When packed so that three digits are encoded in ten bits, the storage overhead is greatly reduced, at the expense of an encoding that is unaligned with the 8-bit byte boundaries common on existing hardware, resulting in slower implementations on these systems.
Practical existing implementations of BCD are typically slower than operations on binary representations, especially on embedded systems,[citation needed] due to limited processor support for native BCD operations.
Application[edit]
The BIOS in many personal computers stores the date and time in BCD because the MC6818 real-time clock chip used in the original IBM PC AT motherboard provided the time encoded in BCD. This form is easily converted into ASCII for display.[22]
The Atari 8-bit family of computers used BCD to implement floating-point algorithms. The MOS 6502 processor has a BCD mode that affects the addition and subtraction instructions. The Psion Organiser 1 handheld computer’s manufacturer-supplied software also used entirely BCD to implement floating point; later Psion models used binary exclusively.
Early models of the PlayStation 3 store the date and time in BCD. This led to a worldwide outage of the console on 1 March 2010. The last two digits of the year stored as BCD were misinterpreted as 16 causing an error in the unit's date, rendering most functions inoperable. This has been referred to as the Year 2010 Problem.
Representational variations[edit]
Various BCD implementations exist that employ other representations for numbers. Programmable calculators manufactured by Texas Instruments, Hewlett-Packard, and others typically employ a floating-point BCD format, typically with two or three digits for the (decimal) exponent. The extra bits of the sign digit may be used to indicate special numeric values, such as infinity, underflow/overflow, and error (a blinking display).
Signed variations[edit]
Signed decimal values may be represented in several ways. The COBOL programming language, for example, supports a total of five zoned decimal formats, each one encoding the numeric sign in a different way:
Type
Description
Example
Unsigned No sign nibble F1 F2 F3
Signed trailing (canonical format) Sign nibble in the last (least significant) byte F1 F2 C3
Signed leading (overpunch) Sign nibble in the first (most significant) byte C1 F2 F3
Signed trailing separate Separate sign character byte ('+' or '−') following the digit bytes F1 F2 F3 2B
Signed leading separate Separate sign character byte ('+' or '−') preceding the digit bytes 2B F1 F2 F3
Telephony Binary Coded Decimal (TBCD)[edit]
3GPP developed TBCD,[23] an expansion to BCD where the remaining (unused) bit combinations are used to add specific telephony characters,[24][25] with digits similar to those found in telephone keypads original design. It is backward compatible with BCD.
Decimal
Digit
TBCD
8 4 2 1
*
1 0 1 0
#
1 0 1 1
a
1 1 0 0
b
1 1 0 1
c
1 1 1 0
Used as filler when there is an odd number of digits
1 1 1 1
Alternative encodings[edit]
If errors in representation and computation are more important than the speed of conversion to and from display, a scaled binary representation may be used, which stores a decimal number as a binary-encoded integer and a binary-encoded signed decimal exponent. For example, 0.2 can be represented as 2×10−1.
This representation allows rapid multiplication and division, but may require shifting by a power of 10 during addition and subtraction to align the decimal points. It is appropriate for applications with a fixed number of decimal places that do not then require this adjustment—particularly financial applications where 2 or 4 digits after the decimal point are usually enough. Indeed, this is almost a form of fixed point arithmetic since the position of the radix point is implied.
Chen–Ho encoding provides a boolean transformation for converting groups of three BCD-encoded digits to and from 10-bit values that can be efficiently encoded in hardware with only 2 or 3 gate delays. Densely packed decimal is a similar scheme that is used for most of the significand, except the lead digit, for one of the two alternative decimal encodings specified in the IEEE 754-2008 standard.
See also[edit]
Bi-quinary coded decimal
Chen–Ho encoding
Densely packed decimal
Double dabble, an algorithm for converting binary numbers to BCD
Gray code
Year 2000 problem
Decimal computer
Notes[edit]
Jump up ^ That is, in a standard packed 4-bit representation, there are 16 states (four bits for each digit) with 10 tetrades and 6 pseudo-tetrades, whereas in more densely packed schemes such as Chen–Ho or DPD coding there are less, f.e. only 24 pseudo-tetrades in 1024 states (10 bits for three digits).
References[edit]
Jump up ^ Intel. "ia32 architecture manual" (PDF). Intel. Retrieved 2015-07-01.
Jump up ^ Schneider, Hans-Jochen (1986). Lexikon der Informatik und Datenverarbeitung (in German) (2 ed.). R. Oldenbourg Verlag München Wien. ISBN 3-486-22662-2.
Jump up ^ Tafel, Hans Jörg (1971). Written at RWTH, Aachen, Germany. Einführung in die digitale Datenverarbeitung [Introduction to digital information processing] (in German). Munich, Germany: Carl Hanser Verlag. ISBN 3-446-10569-7.
Jump up ^ Steinbuch, Karl W.; Weber, Wolfgang; Heinemann, Traute, eds. (1974) [1967]. Taschenbuch der Informatik - Band II - Struktur und Programmierung von EDV-Systemen. Taschenbuch der Nachrichtenverarbeitung (in German). 2 (3 ed.). Berlin, Germany: Springer-Verlag. ISBN 3-540-06241-6. LCCN 73-80607.
Jump up ^ Tietze, Ulrich; Schenk, Christoph (2012-12-06). Advanced Electronic Circuits. Springer Science & Business Media. ISBN 3642812414. 9783642812415. Retrieved 2015-08-05.
Jump up ^ Kowalski, Emil (2013-03-08) [1970]. Nuclear Electronics. Springer-Verlag. doi:10.1007/978-3-642-87663-9. ISBN 3642876633. 9783642876639, 978-3-642-87664-6. Retrieved 2015-08-05.
Jump up ^ Ferretti, Vittorio (2013-03-13). Wörterbuch der Elektronik, Datentechnik und Telekommunikation / Dictionary of Electronics, Computing and Telecommunications: Teil 1: Deutsch-Englisch / Part 1: German-English. 1 (2 ed.). Springer-Verlag. ISBN 3642980880. 9783642980886. Retrieved 2015-08-05.
Jump up ^ Speiser, Ambrosius Paul (1965) [1961]. Digitale Rechenanlagen - Grundlagen / Schaltungstechnik / Arbeitsweise / Betriebssicherheit [Digital computers - Basics / Circuits / Operation / Reliability] (in German) (2 ed.). ETH Zürich, Zürich, Switzerland: Springer-Verlag / IBM. p. 209. LCCN 65-14624. 0978.
Jump up ^ Cowlishaw, Mike F. (2015) [1981,2008]. "General Decimal Arithmetic". Retrieved 2016-01-02.
Jump up ^ Parag K., Lala (2007). Principles of Modern Digital Design. John Wiley & Sons. pp. 20–25. ISBN 978-0-470-07296-7.
Jump up ^ University of Alicante. "A Cordic-based Architecture for High Performance Decimal Calculations" (PDF). IEEE. Retrieved 2015-08-15.
Jump up ^ "Decimal CORDIC Rotation based on Selection by Rounding: Algorithm and Architecture" (PDF). British Computer Society. Retrieved 2015-08-14.
Jump up ^ "Chapter 8: Decimal Instructions", IBM System/370 Principles of Operation, IBM, March 1980
Jump up ^ "Chapter 3: Data Representation", PDP-11 Architecture Handbook, Digital Equipment Corporation, 1983
^ Jump up to: a b VAX-11 Architecture Handbook, Digital Equipment Corporation, 1985
Jump up ^ "ILE RPG Reference".
Jump up ^ IBM BM 1401/1440/1460/1410/7010 Character Code Chart in BCD Order[permanent dead link]
Jump up ^ http://publib.boulder.ibm.com/infocenter/zos/v1r12/index.jsp?topic=%2Fcom.ibm.zos.r12.iceg200%2Fenf.htm[permanent dead link]
Jump up ^ Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 1: Basic Architecture. Intel Corporation. December 2016. p. 4-9.
Jump up ^ url=http://www.tigernt.com/onlineDoc/68000.pdf
Jump up ^ Jones, Douglas W. (2015-11-25) [1999]. "BCD Arithmetic, a tutorial". Arithmetic Tutorials. Iowa City, Iowa, USA: The University of Iowa, Department of Computer Science. Retrieved 2016-01-03.
Jump up ^ http://www.se.ecu.edu.au/units/ens1242/lectures/ens_Notes_08.pdf[permanent dead link]
Jump up ^ 3GPP TS 29.002: Mobile Application Part (MAP) specification (Technical report). 2013. sec. 17.7.8 Common data types.
Jump up ^ "Signalling Protocols and Switching (SPS) Guidelines for using Abstract Syntax Notation One (ASN.1) in telecommunication application protocols" (PDF). p. 15.
Jump up ^ "XOM Mobile Application Part (XMAP) Specification" (PDF). p. 93.
Further reading[edit]
Mackenzie, Charles E. (1980). Coded Character Sets, History and Development. The Systems Programming Series (1 ed.). Addison-Wesley Publishing Company, Inc. p. xii. ISBN 0-201-14460-3. LCCN 77-90165. ISBN 978-0-201-14460-4. Retrieved 2016-05-22. [1]
Richards, Richard Kohler (1955). Arithmetic Operations in Digital Computers. New York, USA: van Nostrand. pp. 397–.
Schmid, Hermann (1974). Decimal Computation (1 ed.). Binghamton, New York, USA: John Wiley & Sons. ISBN 0-471-76180-X. and Schmid, Hermann (1983) [1974]. Decimal Computation (1 (reprint) ed.). Malabar, Florida, USA: Robert E. Krieger Publishing Company. ISBN 0-89874-318-4. (NB. At least some batches of the Krieger reprint edition were misprints with defective pages 115–146.)
Massalin, Henry (October 1987). Katz, Randy, ed. "Superoptimizer: A Look at the Smallest Program" (PDF). Proceedings of the Second International Conference on Architectural support for Programming Languages and Operating Systems ACM SIGOPS Operating Systems Review. 21 (4): 122–126. doi:10.1145/36206.36194. ISBN 0-8186-0805-6. Archived (PDF) from the original on 2017-07-04. Retrieved 2012-04-25. Lay summary (1995-06-14). (Also: ACM Sigplan Notices, Vol. 22 #10, IEEE Computer Society Press #87CH2440-6, October 1987)
VLSI designs for redundant binary-coded decimal addition, Behrooz Shirazi, David Y. Y. Yun, and Chang N. Zhang, IEEE Seventh Annual International Phoenix Conference on Computers and Communications, 1988, pp52–56, IEEE, March 1988
Fundamentals of Digital Logic by Brown and Vranesic, 2003
Modified Carry Look Ahead BCD Adder With CMOS and Reversible Logic Implementation, Himanshu Thapliyal and Hamid R. Arabnia, Proceedings of the 2006 International Conference on Computer Design (CDES'06), ISBN 1-60132-009-4, pp64–69, CSREA Press, November 2006
Reversible Implementation of Densely-Packed-Decimal Converter to and from Binary-Coded-Decimal Format Using in IEEE-754R, A. Kaivani, A. Zaker Alhosseini, S. Gorgin, and M. Fazlali, 9th International Conference on Information Technology (ICIT'06), pp273–276, IEEE, December 2006.
Cowlishaw, Mike F. (2009) [2002,2008]. "Bibliography of material on Decimal Arithmetic – by category". General Decimal Arithmetic. IBM. Retrieved 2016-01-02.
External links[edit]
Cowlishaw, Mike F. (2014) [2000]. "A Summary of Chen-Ho Decimal Data encoding". General Decimal Arithmetic. IBM. Retrieved 2016-01-02.
Cowlishaw, Mike F. (2007) [2000]. "A Summary of Densely Packed Decimal encoding". General Decimal Arithmetic. IBM. Retrieved 2016-01-02.
Convert BCD to decimal, binary and hexadecimal and vice versa
BCD for Java
Retrieved from "https://en.wikipedia.org/w/index.php?title=Binary-coded_decimal&oldid=844821751"
Categories:
Computer arithmetic
Numeral systems
Non-standard positional numeral systems
Binary arithmetic
Hidden categories:
CS1 German-language sources (de)
All articles with dead external links
Articles with dead external links from November 2016
Articles with permanently dead external links
Interlanguage link template link number
Articles needing additional references from January 2018
All articles needing additional references
Articles lacking reliable references from January 2018
All articles lacking reliable references
All articles with unsourced statements
Articles with unsourced statements from May 2011
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Article
Talk
Variants
Views
Read
Edit
View history
More
Search
Navigation
Main page
Contents
Featured content
Current events
Random article
Donate to Wikipedia
Wikipedia store
Interaction
Help
About Wikipedia
Community portal
Recent changes
Contact page
Tools
What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Wikidata item
Cite this page
Print/export
Create a book
Download as PDF
Printable version
In other projects
Wikimedia Commons
Languages
العربية
Azərbaycanca
বাংলা
Català
Čeština
Dansk
Deutsch
Eesti
Español
فارسی
Français
Gaeilge
한국어
हिन्दी
Bahasa Indonesia
Italiano
עברית
Latviešu
Lietuvių
Magyar
Mirandés
Nederlands
日本語
Polski
Português
Русский
සිංහල
Slovenčina
Српски / srpski
Suomi
Svenska
ไทย
Türkçe
Українська
اردو
Tiếng Việt
中文
28 more
Edit links
This page was last edited on 7 June 2018, at 11:40.
Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.
Privacy policy
About Wikipedia
Disclaimers
Contact Wikipedia
Developers
Cookie statement
Mobile view
Enable previews

values: mw-page-base noprint

values: mw-head-base noprint

values: firstHeading firstHeading en

values: siteSub noprint

values: mw-jump-link #mw-head

values: mw-jump-link #p-search

attrs: role class

values:
note
hatnote navigation-not-searchable

value: b

values:
/wiki/Binary_numeral_system
mw-redirect
Binary numeral system

values:
/wiki/Tetrade_(computing)
mw-redirect
Tetrade (computing)

values:
/wiki/Don%27t_care
mw-redirect
Don't care

values:
noprint
font-size:85%; font-style: normal;

values:
/wiki/Positional_system
mw-redirect
Positional system

values: Help:Introduction to referencing with Wiki Markup/1

values: plainlinks metadata ambox ambox-content ambox-Refimprove

values: plainlinks metadata ambox ambox-content ambox-Primary_sources

attrs: border cellpadding cellspacing align width

values:
/wiki/Word_(data_type)
mw-redirect
Word (data type)

values: display:block; line-height:1em; margin:0 0.1em;

values: display:block; line-height:1em; margin:0 0.1em; border-top:1px solid;

values: display:inline-block; vertical-align:-0.5em; font-size:85%; text-align:center;

values:
/wiki/Ten%27s_complement
mw-redirect
Ten's complement

values: Edit section: Fixed-point packed decimal

values: Edit section: EBCDIC zoned decimal conversion table

attrs: border cellpadding cellspacing align width class

values:
/wiki/Instruction_set
mw-redirect
Instruction set

values:
/wiki/Positive_number
mw-redirect
Positive number

values:
/wiki/Nine%27s_complement
mw-redirect
Nine's complement

values: Edit section: Comparison with pure binary

values:
/wiki/Big-O_notation
mw-redirect
Big-O notation

values: This claim needs references to reliable sources. (May 2011)

values:
noprint Inline-Template Template-Fact
white-space:nowrap;

values: Edit section: Representational variations

values:
/wiki/Arithmetic_overflow
mw-redirect
Arithmetic overflow

values:
/wiki/Defined_and_undefined
mw-redirect
Defined and undefined

values: Edit section: Telephony Binary Coded Decimal (TBCD)

values:
/wiki/Backward_compatible
mw-redirect
Backward compatible

values:
/wiki/Fixed_point_arithmetic
mw-redirect
Fixed point arithmetic

values:
/wiki/IEEE_754-2008
mw-redirect
IEEE 754-2008

values:
reflist mw-references-wrap
list-style-type: decimal;

values:
/wiki/Karl_W._Steinbuch
mw-redirect
Karl W. Steinbuch

values:
nofollow
external text
//lccn.loc.gov/73-80607

values:
/wiki/Ambrosius_Paul_Speiser
mw-redirect
Ambrosius Paul Speiser

values: Eidgenössische Technische Hochschule Zürich

values:
nofollow
external text
//lccn.loc.gov/65-14624

values:
/wiki/Mike_F._Cowlishaw
mw-redirect
Mike F. Cowlishaw

values:
nofollow
http://speleotrove.com/decimal/
external text

values:
nofollow
external text
http://www.openss7.org/specs/xmap.pdf

values:
nofollow
external text
//lccn.loc.gov/77-90165

values:
/wiki/Van_Nostrand_(publisher)
mw-redirect
Van Nostrand (publisher)

values:
/wiki/Henry_Massalin
mw-redirect
Henry Massalin

values:
nofollow
external text
//doi.org/10.1145%2F36206.36194

values:
nofollow
external text
https://github.com/c-rack/bcd4j

values: Category:Non-standard positional numeral systems

values: Category:CS1 German-language sources (de)

values: Category:All articles with dead external links

values: Category:Articles with dead external links from November 2016

values: Category:Articles with permanently dead external links

values: Category:Interlanguage link template link number

values: Category:Articles needing additional references from January 2018

values: Category:All articles needing additional references

values: Category:Articles lacking reliable references from January 2018

values: Category:All articles lacking reliable references

values: Category:All articles with unsourced statements

values: Category:Articles with unsourced statements from May 2011

values: Discussion about edits from this IP address [ctrl-alt-n]

values: A list of edits made from this IP address [ctrl-alt-y]

values: You are encouraged to create an account and log in; however, it is not mandatory

values: You're encouraged to log in; however, it's not mandatory. [ctrl-alt-o]

values:
/wiki/Binary-coded_decimal
View the content page [ctrl-alt-c]
c

values: Discussion about the content page [ctrl-alt-t]

values: p-namespaces navigation vectorTabs p-namespaces-label

values:
p-variants
navigation
vectorMenu emptyPortlet
p-variants-label

values: Past revisions of this page [ctrl-alt-h]

values: p-views navigation vectorTabs p-views-label

values:
p-cactions
navigation
vectorMenu emptyPortlet
p-cactions-label

values:
mw-wiki-logo
/wiki/Main_Page
Visit the main page

values:
/wiki/Main_Page
Visit the main page [ctrl-alt-z]
z

values: Featured content – the best of Wikipedia

values: Find background information on current events

values:
/wiki/Special:Random
Load a random article [ctrl-alt-x]
x

values: portal navigation p-navigation p-navigation-label

values: Guidance on how to use and edit Wikipedia

values: About the project, what you can do, where to find things

values: A list of recent changes in the wiki [ctrl-alt-r]

values: portal navigation p-interaction p-interaction-label

values: List of all English Wikipedia pages containing links to this page [ctrl-alt-j]

values: Recent changes in pages linked from this page [ctrl-alt-k]

values:
/wiki/Wikipedia:File_Upload_Wizard
Upload files [ctrl-alt-u]
u

values: A list of all special pages [ctrl-alt-q]

values: Permanent link to this revision of the page

values: Link to connected data repository item [ctrl-alt-g]

values: Printable version of this page [ctrl-alt-p]

values: portal navigation p-wikibase-otherprojects p-wikibase-otherprojects-label

values: نظام عشري مشفر ثنائيا – Arabic

values:
interlanguage-link interwiki-az
display: none;

values: বাইনারি কোডেড ডেসিমাল (বিসিডি) – Bangla

values:
interlanguage-link interwiki-bn
display: none;

values:
https://ca.wikipedia.org/wiki/BCD
BCD – Catalan
ca
ca
interlanguage-link-target

values:
interlanguage-link interwiki-ca
display: none;

values:
https://cs.wikipedia.org/wiki/BCD
BCD – Czech
cs
cs
interlanguage-link-target

values:
interlanguage-link interwiki-cs
display: none;

values:
https://da.wikipedia.org/wiki/BCD_(tal)
BCD (tal) – Danish
da
da
interlanguage-link-target

values:
interlanguage-link interwiki-da
display: none;

values:
https://de.wikipedia.org/wiki/BCD-Code
BCD-Code – German
de
de
interlanguage-link-target

values:
interlanguage-link interwiki-de
display: none;

values:
interlanguage-link interwiki-et
display: none;

values: دهدهی به رمز دودویی – Persian

values:
interlanguage-link interwiki-fa
display: none;

values:
interlanguage-link interwiki-ga
display: none;

values: 이진화 십진법 – Korean

values:
interlanguage-link interwiki-ko
display: none;

values: द्वयाधारी कूटित दशमलव – Hindi

values:
interlanguage-link interwiki-it
display: none;

values: עשרוני בקידוד בינארי – Hebrew

values:
interlanguage-link interwiki-he
display: none;

values: Bināri kodēta decimāla pierakste – Latvian

values:
interlanguage-link interwiki-lv
display: none;

values: Dvejetainis-dešimtainis kodas – Lithuanian

values:
interlanguage-link interwiki-lt
display: none;

values:
interlanguage-link interwiki-mwl
display: none;

values:
https://nl.wikipedia.org/wiki/BCD-code
BCD-code – Dutch
nl
nl
interlanguage-link-target

values: 二進化十進表現 – Japanese

values:
interlanguage-link interwiki-ja
display: none;

values:
https://pl.wikipedia.org/wiki/Kod_BCD
Kod BCD – Polish
pl
pl
interlanguage-link-target

values: Codificação binária decimal – Portuguese

values: Двоично-десятичный код – Russian

values: ද්විමය-කේතක දශාංශික – Sinhala

values:
interlanguage-link interwiki-si
display: none;

values:
interlanguage-link interwiki-sk
display: none;

values: Бинарно кодирани децимални број – Serbian

values:
interlanguage-link interwiki-sr
display: none;

values:
https://fi.wikipedia.org/wiki/BCD-koodi
BCD-koodi – Finnish
fi
fi
interlanguage-link-target

values:
interlanguage-link interwiki-fi
display: none;

values:
https://sv.wikipedia.org/wiki/BCD
BCD – Swedish
sv
sv
interlanguage-link-target

values:
interlanguage-link interwiki-sv
display: none;

values: เลขฐานสิบเข้ารหัสฐานสอง – Thai

values:
interlanguage-link interwiki-th
display: none;

values:
https://tr.wikipedia.org/wiki/BCD_kodu
BCD kodu – Turkish
tr
tr
interlanguage-link-target

values:
interlanguage-link interwiki-tr
display: none;

values: Двійково-десятковий код – Ukrainian

values:
interlanguage-link interwiki-uk
display: none;

values: ثنائی رمزشدہ عشریہ – Urdu

values: Số thập phân được mã hóa nhị phân – Vietnamese

values: 二進碼十進數 – Chinese

values: mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Binary-coded_decimal rootpage-Binary-coded_decimal skin-vector action-view


text:
Cheesesteak
From Wikipedia, the free encyclopedia
Jump to: navigation, search
Cheesesteak
A cheesesteak sandwich
Alternative names
Philadelphia cheesesteak, Philly cheesesteak
Course
Main course
Place of origin
United States
Region or state
Philadelphia, Pennsylvania
Created by
Pat & Harry Olivieri
Serving temperature
Hot
Main ingredients
Sliced steak, cheese, bread
Variations
Multiple
Food energy
(per serving)
759 kcal (3178 kJ)
Cookbook: Cheesesteak Media: Cheesesteak
Part of a series on
Steak
Main articles[show]
Steak
Beefsteak
Fish steak
Pork steak
List of steak dishes
Steakhouse
Steak dishes[show]
Asado
Beef Manhattan
Beef Wellington
Boiled beef
Bulgogi
Carpetbag steak
Carne asada
Chateaubriand steak
Cheesesteak
Chicken fried steak
Bistek Tagalog
Bollito Misto
Delmonico steak
Fajita
Finger steaks
Hamburg steak
London broil
Mongolian beef
Pepper steak
Pot roast
Prawn cocktail, steak and Black Forest gateau
Roast beef
Italian beef
Salisbury steak
Sha cha beef
Shawarma
Standing rib roast
Steak and eggs
Steak and kidney pie
Steak and kidney pudding
Steak and oyster pie
Steak au poivre
Steak burger
Steak de Burgo
Steak Diane
Steak frites
Steak sandwich
Steak tartare
Suadero
Surf and turf
Swiss steak
Cuts[show]
Cuts of beef
Forequarter cuts
Hindquarter cuts
Preparation[show]
Barbecue
Braising
Meat chop
Curing (food preservation)
Frying
Aging
Marination
Pickling
Poaching (cooking)
Roasting
Salt-cured meat
Smoked
Related topics[show]
List of beef dishes
Meat on the bone
Restructured steak
Steak knife
Steak sauce
v
t
e
A cheesesteak, also known as a Philadelphia cheesesteak, Philly cheesesteak, cheesesteak sandwich, cheese steak, or steak and cheese, is a sandwich made from thinly sliced pieces of beefsteak and melted cheese in a long hoagie roll.[1][2] A popular regional fast food, it has its roots in Philadelphia,[3] Pennsylvania, United States.
Contents
[hide]
1 History
2 Description
2.1 Meat
2.2 Bread
2.3 Cheese
3 Variations
4 See also
5 References
6 External links
History[edit]
The cheesesteak was developed in the early 20th century "by combining frizzled beef, onions, and cheese in a small loaf of bread", according to a 1987 exhibition catalog published by the Library Company of Philadelphia and the Historical Society of Pennsylvania.[4]
Philadelphians Pat and Harry Olivieri are often credited with inventing the sandwich by serving chopped steak on an Italian roll in the early 1930s.[5][6][7] The exact story behind its creation is debated, but in some accounts, Pat and Harry Olivieri originally owned a hot dog stand, and on one occasion, decided to make a new sandwich using chopped beef and grilled onions. While Pat was eating the sandwich, a cab driver stopped by and was interested in it, so he requested one for himself. After eating it, the cab driver suggested that Olivieri quit making hot dogs and instead focus on the new sandwich.[6][8] They began selling this variation of steak sandwiches at their hot dog stand near South Philadelphia's Italian Market. They became so popular that Pat opened up his own restaurant which still operates today as Pat's King of Steaks.[9] The sandwich was originally prepared without cheese; Olivieri said provolone cheese was first added by Joe "Cocky Joe" Lorenza, a manager at the Ridge Avenue location.[10]
Cheesesteaks have become popular at restaurants and food carts throughout the city with many locations being independently owned, family-run businesses.[11][12] Variations of cheesesteaks are now common in several fast food chains.[13] Versions of the sandwich can also be found at high-end restaurants.[14] Many establishments outside of Philadelphia refer to the sandwich as a "Philly cheesesteak."[8]
Description[edit]
Meat[edit]
The meat traditionally used is thinly sliced rib-eye or top round, although other cuts of beef are also used.[15] On a lightly oiled griddle at medium temperature, the steak slices are quickly browned and then scrambled into smaller pieces with a flat spatula. Slices of cheese are then placed over the meat, letting it melt, and then the roll is placed on top of the cheese. The mixture is then scooped up with a spatula and pressed into the roll, which is then cut in half.[16]
Common additions include sautéed onions, bell peppers, mushrooms, mayonnaise, hot sauce, salt, pepper.
Bread[edit]
In Philadelphia, most cheesesteak places use Amoroso rolls; these rolls are long, soft, and slightly salted.[17] One source writes that "a proper cheesesteak consists of provolone or Cheez Whiz slathered on an Amoroso roll and stuffed with thinly shaved grilled meat,"[18] while a reader's letter to an Indianapolis magazine, lamenting the unavailability of good cheesesteaks, wrote that "the mention of the Amoroso roll brought tears to my eyes."[19] After commenting on the debates over types of cheese and "chopped steak or sliced," Risk and Insurance magazine declared "The only thing nearly everybody can agree on is that it all has to be piled onto a fresh, locally baked Amoroso roll."[20]
Cheese[edit]
A cheesesteak from Pat's with Cheez Whiz and onions
American cheese, Cheez Whiz, and provolone are the most commonly used cheeses or cheese products put on to the Philly cheesesteak.[21]
White American cheese, along with provolone cheese, are the favorites due to their mild flavor and medium consistency. Some establishments melt the American cheese to achieve the creamy consistency, while others place slices over the meat, letting them melt slightly under the heat. Philadelphia Inquirer restaurant critic Craig LaBan says "Provolone is for aficionados, extra-sharp for the most discriminating among them." Geno's owner, Joey Vento, said, "We always recommend the provolone. That's the real cheese."[21]
Cheez Whiz, first marketed in 1952, was not yet available for the original 1930 version, but has spread in popularity.[22] A 1986 New York Times article called Cheez Whiz "the sine qua non of cheesesteak connoisseurs."[23] In a 1985 interview, Pat Olivieri's nephew Frank Olivieri said that he uses "the processed cheese spread familiar to millions of parents who prize speed and ease in fixing the children's lunch for the same reason, because it is fast."[24] Cheez Whiz is "overwhelmingly the favorite" at Pat's, outselling runner-up American by a ratio of eight or ten to one, while Geno's claims to go through eight to ten cases of Cheez Whiz a day.[21]
In 2003, while running for President of the United States, John Kerry made what was considered a major faux pas when campaigning in Philadelphia and went to Pat's King of Steaks and ordered a cheesesteak with Swiss.[25]
Variations[edit]
A chicken cheesesteak is made with chicken instead of beef, sometimes referred to as a chicken Philly[26]
A pizza steak is a cheesesteak topped with marinara sauce and mozzarella cheese and may be toasted in a broiler[27]
A cheesesteak hoagie contains lettuce and tomato in addition to the ingredients found in the traditional steak sandwich, and may contain other elements often served in a hoagie.[28]
A vegan cheesesteak is a sandwich that replaces steak and cheese with vegan ingredients, such as seitan or mushrooms for the steak, and soy-based cheese.[29][30][31][32]
See also[edit]
Food portal
Philadelphia portal
Hoagie
Italian beef
List of American sandwiches
List of regional dishes of the United States
List of sandwiches
List of steak dishes
Roast beef sandwich
Steak sandwich
References[edit]
Jump up ^ Pham, K.; Shen, P.; Phillips, T. (2014). Food Truck Road Trip--A Cookbook: More Than 100 Recipes Collected from the Best Street Food Vendors Coast to Coast. Page Street Publishing. ISBN 978-1-62414-087-7.
Jump up ^ Fodor's Travel Publications, I.; Jabado, S.C. (2010). Fodor's 2010 Philadelphia & the Pennsylvania Dutch Country. Fodor's Philadelphia and the Pennsylvania Dutch Country. Fodor's Travel Pub. p. 120. ISBN 978-1-4000-0877-3.
Jump up ^ Greater Philadelphia Tourism Marketing Corporation (21 November 2008). "Philadelphia – African American Visitor's Guide and its suburbs" (PDF). Archived from the original (PDF) on 2006-12-10.
Jump up ^ Hines, Mary Anne; Marshall, Gordon; Weaver, William Woys (1987). The Larder Invaded. The Library Company of Philadelphia and the Historical Society of Pennsylvania. ISBN 0-914076-70-1.
Jump up ^ Stuhldreher, Katie. "Rick's Steaks takes Reading Terminal Market dispute to court". Philly.com. Philly Online, LLC. Archived from the original on 24 January 2008. Retrieved 5 September 2013.
^ Jump up to: a b Andrew F. Smith, ed. (2007). The Oxford Companion to American Food and Drink. Oxford University Press. p. 451. ISBN 0195307968.
Jump up ^ Stuhldreher, Katie (30 July 2007). "Rick's Steaks takes Reading Terminal Market dispute to court". philly.com. Archived from the original on 24 January 2008. Retrieved 30 July 2007.
^ Jump up to: a b Ivory, Karen (2011). Philadelphia Icons: 50 Classic Views of the City of Brotherly Love. Globe Pequot. p. 18. ISBN 0762767650.
Jump up ^ Epting, Chris (2009). The Birthplace Book: A Guide to Birth Sites of Famous People, Places, & Things. Stackpole Books. ISBN 0811740188.
Jump up ^ Fiorillo, Victor (15 December 2008). "The Cheesesteak Cometh". Philadelphia Magazine. Archived from the original on 2010-07-18. Retrieved 13 July 2009.
Jump up ^ Brookes, Karin; et al. (2005). Zoë Ross, ed. Insight Guides: Philadelphia and Surroundings (Second (Updated) ed.). APA Publications. ISBN 1-58573-026-2.
Jump up ^ Price, Betsy (10 July 2009). "Tour de cheesesteak". The News Journal. Archived from the original on February 9, 2015. Retrieved 12 July 2009.
Jump up ^ Hein, Kenneth (22 January 2009). "Domino's, Subway Battle Heats Up". Brandweek. Retrieved 12 July 2009.
Jump up ^ Horowitz, Rachel (11 April 2004). "Cheesesteak raises eyebrows and drains wallets". The Daily Pennsylvanian. Retrieved 13 July 2009.
Jump up ^ Fischer, John. "How To Make a Philly Cheese Steak". About.com. Retrieved 17 December 2008.
Jump up ^ How to Make a Philly Cheesesteak. about.com. Event occurs at 2:10. Retrieved 7 October 2011.
Jump up ^ Hodgman, John (May 2002). "Philly Mignon". Men's Journal. Amoroso Baking Company. Archived from the original on 2008-03-25. Retrieved 2009-07-02.
Jump up ^ Fekete, Jeffery (2009). Making the Big Game. Mill City Press. p. 21. ISBN 978-1-935097-32-7.
Jump up ^ Powell, Warren (December 2000). "Beef Eaters". Indianapolis Magazine. p. 17. ISSN 0899-0328.
Jump up ^ Kerr, Michelle (April 2005). "Hungry for a taste of Philly?". Risk and Insurance. 16 (4). p. 20. |access-date= requires |url= (help)
^ Jump up to: a b c Mucha, Peter. (23 May 2008). "Whiz on a cheesesteak: Hit or myth?". The Philadelphia Inquirer. Retrieved 22 April 2011.
Jump up ^ Hevesi, Dennis (9 June 2007). "Edwin Traisman, 91, Dies; Helped Create Iconic Foods". The New York Times. Retrieved 10 November 2008.
Jump up ^ "Cheese Steak: An Original". The New York Times. 21 May 1986. p. C6. Retrieved 1 July 2009. (Subscription required (help)).
Jump up ^ Stevens, William K. (16 November 1985). "About Philadelphia: Where Cheesesteaks are King, One Family Has Assumed the Crown". The New York Times. p. 10. Retrieved 1 July 2009. (Subscription required (help)).
Jump up ^ "Kerry Eats a Cheesesteak Hoagie With Swiss". Philly.com. Retrieved August 18, 2017.
Jump up ^ "Phillys Famous Cheesesteaks - Clearwater, FL". Phillys Famous Cheesesteaks.
Jump up ^ "Sonny's Famous Steaks, Old City, Philadelphia". Sonny's Famous Steaks.
Jump up ^ "Authentic Philly Cheesesteaks". Visit Philly.
Jump up ^ "Dinner on Deadline: Vegan version of the Philly Cheesesteak". Archived from the original on April 13, 2015.
Jump up ^ "2016 Best Vegan Cheesesteak in Philly contest".
Jump up ^ "Five Philadelphia restaurants serving great vegan cheesesteaks".
Jump up ^ "A guide to vegan cheesesteaks and scrambles in philadelphia".
External links[edit]
An Illustrated History of the Philadelphia Cheesesteak
[show]
v
t
e
Beef and veal
Production
Argentine beef
Beef cattle
Cow-calf operation
Feeder cattle
Kobe beef
Organic beef
Products
Cuts
Blade steak
Brisket
Chateaubriand steak
Chuck steak
Fajita
Filet mignon
Flank steak
Flap steak
Hanger steak
Plate
Ranch steak
Restructured steak
Rib eye
Rib steak
Round
Rump
Short loin
Short ribs
Shoulder tender
Sirloin
Top sirloin
Skirt steak
Spare ribs
Standing rib roast
Strip
Shank
T-bone
Tenderloin
Tri-tip
Trotters
Tail
Processed
Jerky
Aged
Bresaola
Cabeza
Corned beef
Frankfurter Rindswurst
Ground
Montreal smoked
Pastrami
Meat extract
Offal
Brain
Heart
Tongue
Tendon
Tripas
Tripe
Testicles
Dishes
Beefsteak
List of steak dishes
Blanquette de veau
Beef Wellington
Beef bourguignon
Beef bun
Beef Manhattan
Beef noodle soup
Beef on weck
Beef Stroganoff
Boiled beef
Bulgogi
Calf's liver and bacon
Cheesesteak
Chicken fried steak
Cordon bleu
Dendeng
Feu
French dip
Ginger beef
Galbi
Gored gored
Gyūdon
Hamburg steak
Hortobágyi palacsinta
Iga penyet
Italian beef
Jellied veal
Karađorđeva šnicla
Kitfo
London broil
Mongolian beef
Neobiani
Ossobuco
Pot roast
Pozharsky cutlet
P'tcha
Ragout fin
Rawon
Rendang
Roast beef
Roast beef sandwich
Salisbury steak
Saltimbocca
Sha cha beef
Shooter's sandwich
Steak and kidney pudding
Steak Diane
Steak and eggs
Steak and oyster pie
Steak au poivre
Tartare
Tafelspitz
Tongseng
Veal Milanese
Veal Orloff
Veal Oscar
Vitello tonnato
Wallenbergare
Related meats
American bison
Beefalo
Water buffalo
Żubroń
Other
Bovine spongiform encephalopathy
Beef hormone controversy
Beef ring
Carcass grade
Darkcutter
Meat on the bone
Ractopamine - Beef
USA beef imports
Japan
Taiwan
South Korea (2008 US beef protest in South Korea)
[show]
v
t
e
Cheesesteak
Toppings
Cheese
Cheez Whiz
American
Provolone
Fried onions
Contributors
Pat Olivieri
Harry Olivieri
Tony Luke Jr.
Joey Vento
Restaurants in Philadelphia
Pat's King of Steaks
Geno's Steaks
Jim's Steaks
Tony Luke's
Steve's Prince of Steaks
John's Roast Pork
Dalessandro's Steaks
Joe's Steaks
Miscellaneous
Steak sandwich
[show]
v
t
e
Sandwiches
List of sandwiches
Afghani burger
Bagel toast
Bánh mì
Bocadillo
Breakfast
Bacon, egg and cheese
Bun kebab
Cemita
Chimichurris
Chip butty
Chocolate
Chopped Cheese
Chow mein
Crisp
Dagwood
Doughwich
Egg
Fluffernutter
Fool's Gold Loaf
Gatsby
Guajolota
Hamdog
Ice cream
Jam
Mitraillette
Mother-in-law
Pambazo
Peanut butter, banana and bacon
Pistolette
Pocket
Sabich
Sándwich de milanesa
Sandwiches de miga
Sincronizada
Smørrebrød
Spaghetti
Spatlo
Spiedie
St. Paul
Tea
Toast
Tramezzino
Trancapecho
Wrap
Cheese
Carrozza
Cheese and tomato
Cheese dream
Cheese on toast
Grilled cheese
Limburger
Melt
Pebete
Fish and seafood
Bake and Shark
Balık ekmek
Fischbrötchen
Fish finger
Prawn roll
Salmon burger
Sol over Gudhjem
Tuna fish
Meat
American sub
Barbecue
Bauru
Bologna
Chacarero
Chicken
Chivito
Choripán
Club
Cuban
Cudighi
Doner kebab
Donkey Burger
Francesinha
Francesinha poveira
Fried-brain
Gua bao
Gyro
Italian
Jibarito
Kati roll
Kottenbutter
Medianoche
Pepito
Po' boy
Redonkadonk
Roujiamo
Sailor
Shawarma
Shooter's
Slider
Sloppy joe
Strammer Max
Submarine
Tonkatsu
Torta
Torta ahogada
Wrap roti
Wurstbrot
Beef
Barros Luco
Beef on weck
Cheesesteak
Corned beef
Denver
French dip
Hamburger
List of hamburgers
Italian beef
Montreal-style smoked meat
Pastrami on rye
Reuben
Roast beef
Sloppy joe
Steak burger
Steak
Tavern
Tongue
Ham and pork
Bacon
Barros Jarpa
BLT
Croque-monsieur
Flæskesteg
Ham and cheese
Ham and egg bun
Ham salad
Monte Cristo
Porchetta
Pork chop bun
Pork tenderloin
Toast Hawaii
Sausage
Braunschweiger
Liverwurst
Maxwell Street Polish
Mortadella
Polish Boy
Porilainen
Open
Butterbrot
Canapé
Dyrlægens natmad
Gerber
Horseshoe
Mollete
Muisjes
Obložené chlebíčky
Pan bagnat
Panini
Smørrebrød
Zapiekanka
Vegetarian
Baked bean
Cucumber
Dabeli
Doubles
Lettuce
Peanut butter and jelly
Tomato
Vada pav
Vegetable

Related
Sandwich bread
Sandwich loaf
Soup and sandwich
Category:Sandwiches
Food portal
Retrieved from "https://en.wikipedia.org/w/index.php?title=Cheesesteak&oldid=832745266"
Categories:
American sandwiches
Cuisine of Philadelphia
Cuisine of the Mid-Atlantic states
Italian-American cuisine
Italian-American culture in Philadelphia
Fast food
Hidden categories:
Pages using citations with accessdate and no URL
Pages containing links to subscription-only content
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Article
Talk
Variants
Views
Read
Edit
View history
More
Search
Navigation
Main page
Contents
Featured content
Current events
Random article
Donate to Wikipedia
Wikipedia store
Interaction
Help
About Wikipedia
Community portal
Recent changes
Contact page
Tools
What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Wikidata item
Cite this page
Print/export
Create a book
Download as PDF
Printable version
In other projects
Wikimedia Commons
Languages
Deutsch
Español
فارسی
Français
한국어
Bahasa Indonesia
Íslenska
Italiano
日本語
Polski
Simple English
中文
5 more
Edit links
This page was last edited on 27 March 2018, at 19:39.
Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.
Privacy policy
About Wikipedia
Disclaimers
Contact Wikipedia
Developers
Cookie statement
Mobile view
Enable previews

key: html

type: local

value: div

attrs: id class

values: mw-page-base noprint

values: mw-head-base noprint

value: a

attrs: id class lang

values: firstHeading firstHeading en

values: siteSub noprint

values: jump-to-nav mw-jump

value: span

value: caption

value: img

attrs: alt src width height srcset data-file-width data-file-height

attrs: href class

value: td

attrs: colspan style

value: tr

value: th

attrs: scope style

attrs: alt src width height class srcset data-file-width data-file-height

values:
/wiki/File:Ribeye-MCB-MaggieO.jpg
image
Beef steaks

values: font-size: 105%; padding: 0.2em 0px 0.4em; text-align: center; display: none;

values: float:right;clear:right;width:22.0em;margin:0 0 1.0em 1.0em;background:#f9f9f9;border:1px solid #aaa;padding:0.2em;border-spacing:0.4em 0;text-align:center;line-height:1.4em;font-size:88%

values:
/wiki/Italian_Market
mw-redirect
Italian Market

values: display:table-cell;padding:0.2em 0.2em 0.2em 0.3em;vertical-align:middle

values: margin:0.5em 0 0.5em 1em;border:solid #aaa 1px

values:
nofollow
external text
//www.worldcat.org/issn/0899-0328

values: The site requires a paid subscription to access this page.

values:
nofollow
http://www.phillyslargo.com/
external text

values:
nofollow
https://www.sonnyscheesesteaks.com/
external text

values:
nofollow
http://veganjawn.com/
external text

values: -moz-column-width: 30em; -webkit-column-width: 30em; column-width: 30em; list-style-type: decimal;

values: United States beef imports in South Korea

values: nowraplinks collapsible autocollapse navbox-inner

values:
navbox-image
4
width:1px;padding:0px 0px 0px 2px

values: nowraplinks hlist collapsible autocollapse navbox-inner

values: navigation navbox Cheesesteak padding:3px

values: Peanut butter, banana and bacon sandwich

values:
/wiki/File:French_Dip_Sandwich.jpg
image
A French dip sandwich

values:
/wiki/File:Sandwiches_Vienna.jpg
image
Seafood sandwiches

values:
navbox-image
2
width:1px;padding:0px 0px 0px 2px

attrs: alt src title width height srcset data-file-width data-file-height

values: navigation navbox Sandwiches padding:3px

values: Category:Cuisine of the Mid-Atlantic states

values: Category:Italian-American culture in Philadelphia

values: Category:Pages using citations with accessdate and no URL

values: Category:Pages containing links to subscription-only content

values: Discussion about edits from this IP address [ctrl-alt-n]

values: A list of edits made from this IP address [ctrl-alt-y]

values: You are encouraged to create an account and log in; however, it is not mandatory

values: You're encouraged to log in; however, it's not mandatory. [ctrl-alt-o]

values:
/wiki/Cheesesteak
View the content page [ctrl-alt-c]
c

values: Discussion about the content page [ctrl-alt-t]

values: p-namespaces navigation vectorTabs p-namespaces-label

values:
p-variants
navigation
vectorMenu emptyPortlet
p-variants-label

values: Past revisions of this page [ctrl-alt-h]

values: p-views navigation vectorTabs p-views-label

values:
p-cactions
navigation
vectorMenu emptyPortlet
p-cactions-label

values:
mw-wiki-logo
/wiki/Main_Page
Visit the main page

values:
/wiki/Main_Page
Visit the main page [ctrl-alt-z]
z

values: Featured content – the best of Wikipedia

values: Find background information on current events

values:
/wiki/Special:Random
Load a random article [ctrl-alt-x]
x

values: portal navigation p-navigation p-navigation-label

values: Guidance on how to use and edit Wikipedia

values: About the project, what you can do, where to find things

values: A list of recent changes in the wiki [ctrl-alt-r]

values: portal navigation p-interaction p-interaction-label

values: List of all English Wikipedia pages containing links to this page [ctrl-alt-j]

values: Recent changes in pages linked from this page [ctrl-alt-k]

values:
/wiki/Wikipedia:File_Upload_Wizard
Upload files [ctrl-alt-u]
u

values: A list of all special pages [ctrl-alt-q]

values: Permanent link to this revision of the page

values: Link to connected data repository item [ctrl-alt-g]

values: Printable version of this page [ctrl-alt-p]

values: portal navigation p-wikibase-otherprojects p-wikibase-otherprojects-label

values: چیزاستیک – Persian

values:
interlanguage-link interwiki-fa
display: none;

values: 치즈스테이크 – Korean

values:
interlanguage-link interwiki-is
display: none;

values:
interlanguage-link interwiki-it
display: none;

values: チーズステーキ – Japanese

values:
interlanguage-link interwiki-pl
display: none;

values:
interlanguage-link interwiki-simple
display: none;

values: 費城牛肉芝士三明治 – Chinese

values: All languages (initial selection from common choices by you and others)

values: /static/images/wikimedia-button-1.5x.png 1.5x, /static/images/wikimedia-button-2x.png 2x

values: /static/images/poweredby_mediawiki_132x47.png 1.5x, /static/images/poweredby_mediawiki_176x62.png 2x

values:
suggestions
display: none; font-size: 13px;

values: mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Cheesesteak rootpage-Cheesesteak skin-vector action-view