Jump to content

Binary-coded decimal: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
"3/8" --> "about 1/6" -- it is not 1-10/16, but rather 1-(log 10)/(log 16).
mNo edit summary
Line 13: Line 13:
Since most computers store data in eight-bit [[byte]]s, there are two common ways of storing four-bit BCD digits in those bytes: either one can simply ignore the extra four bits of each byte, usually filling them with zero bits or one bits (as in [[EBCDIC]]); or one can store two digits per byte, called "packed" BCD. Thus the number 127 would be represented as (11110001, 11110010, 11110111) in EBCDIC; or as (00000001, 00100111) in packed BCD (with a leading zero added).
Since most computers store data in eight-bit [[byte]]s, there are two common ways of storing four-bit BCD digits in those bytes: either one can simply ignore the extra four bits of each byte, usually filling them with zero bits or one bits (as in [[EBCDIC]]); or one can store two digits per byte, called "packed" BCD. Thus the number 127 would be represented as (11110001, 11110010, 11110111) in EBCDIC; or as (00000001, 00100111) in packed BCD (with a leading zero added).


While BCD is wasteful (about 1/6 of the available memory is wasted, even in packed BCD), it has a direct correspondence to the [[ASCII]] character set if the BCD number is prepended or OR'd with 00110000 (decimal 48), and large numbers can easily be displayed on 7-element displays by splitting up the [[Integral data type|nybbles]] and sending each to a different character (the individual characters often have the wiring to display the correct figures). The [[BIOS]] in PCs usually keeps the date and time in BCD format, most probably for historial reasons.
While BCD is wasteful (about 1/6 of the available memory is wasted, even in packed BCD), it has a direct correspondence to the [[ASCII]] character set if the BCD number is prepended or OR'd with 00110000 (decimal 48), and large numbers can easily be displayed on 7-element displays by splitting up the [[Integral data type|nybbles]] and sending each to a different character (the individual characters often have the wiring to display the correct figures). The [[BIOS]] in PCs usually keeps the date and time in BCD format, probably for historical reasons.

Revision as of 21:58, 5 January 2003


Binary coded decimal (BCD) is a way of encoding numbers in computer memory. In BCD, numbers are represented as decimal digits, and each digit is represented by four bits:

Digit Bits      Digit Bits
  0   0000        5   0101
  1   0001        6   0110
  2   0010        7   0111
  3   0011        8   1000
  4   0100        9   1001

To encode a number such as 127, then, one simply encodes each of the decimal digits as above, giving (0001, 0010, 0111).

Since most computers store data in eight-bit bytes, there are two common ways of storing four-bit BCD digits in those bytes: either one can simply ignore the extra four bits of each byte, usually filling them with zero bits or one bits (as in EBCDIC); or one can store two digits per byte, called "packed" BCD. Thus the number 127 would be represented as (11110001, 11110010, 11110111) in EBCDIC; or as (00000001, 00100111) in packed BCD (with a leading zero added).

While BCD is wasteful (about 1/6 of the available memory is wasted, even in packed BCD), it has a direct correspondence to the ASCII character set if the BCD number is prepended or OR'd with 00110000 (decimal 48), and large numbers can easily be displayed on 7-element displays by splitting up the nybbles and sending each to a different character (the individual characters often have the wiring to display the correct figures). The BIOS in PCs usually keeps the date and time in BCD format, probably for historical reasons.