Jump to content

Binary prefix

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Omegatron (talk | contribs) at 01:01, 2 June 2007. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

In computing, binary prefixes can be used to quantify large numbers where powers of two are more useful than powers of ten (such as computer memory sizes). Each successive prefix is multiplied by 1024 (210) rather than the 1000 (103) used by the SI prefix system. Binary prefixes are often written and pronounced identically to the SI prefixes, despite the resulting ambiguity.

History

For instance, 1,024 (210) bytes is accurately designated as 1.0 kilobytes to two significant digits. In the absence of other information, it is never clear what an author means by k (or K) for any power of 2 lower than 215. "32k" equals 32,000 according to the SI usage or 215=32,768 in the power-of-two usage; the latter rounds to 33k in the SI.

This led to much confusion about the meaning of the SI prefixes combined with "byte" (kilobyte, megabyte, gigabyte, etc.).

The practice of using binary-based prefixes for computer memory arose as early as 1964.[1]

As storage size increased, binary meaning was also extended to higher SI prefixes, such as mega, M, and giga, G, where differences become greater.

In January 1999, the International Electrotechnical Commission introduced the prefixes kibi-, mebi-, gibi-, etc., and the symbols Ki, Mi, Gi, etc. to specify binary multiples of a quantity and eliminate this ambiguity.[2] The names for the new standard are derived from the first two letters of the original SI prefixes followed by bi, short for "binary". The new standard also clarifies that, from the point of view of the IEC, the SI prefixes will henceforth only have their base-10 meaning and never have a base-2 meaning.

The second edition of the standard[3] defined them only up to exbi-[4], but in 2005, the third edition added prefixes zebi- and yobi-, thus matching all standard SI prefixes with their binary counterparts.[5]

On March 19, 2005 the IEEE standard IEEE 1541-2002 (Prefixes for Binary Multiples) has been elevated to a full-use standard by the IEEE Standards Association after a two-year trial period.[6]

Consumer confusion

File:Seagate 160 GB hard drive box.jpg
This hard disk can hold 160×109 bytes, and is marketed using standard SI prefixes as "160 GB"
File:Fdisk showing 160 GB disk.png
Linux's fdisk uses standard SI prefixes to display a 160×109 byte disk as "160.0 GB"

In the early days of computers there was little or no consumer confusion because of the sophisticated nature of the consumers and the practice of the computer manufacturers to specify (as opposed to advertise) their products with decimal digits of sufficient places, e.g., the 1968 IBM stated System 360 "Model 91s can accommodate up to 6,291,496 bytes of main storage."[7] The confusion appears to relate to the advent of graphical user interfaces where there was not enough space to provide sufficient digits to fully state the capacity.[dubiousdiscuss] In such GUIs, storage capacity was reported in a mixed system of decimal digits and binary prefixes using the SI notation. Apparently, some computer programmers were unaware that disk drive manufacturers used the SI notation when specifying and/or advertising capacity of their hard disk drives.[dubiousdiscuss] This mixed presentation appears as early as Microsoft Windows 98 which, for example, would report the space available on a 41,959,424 byte hard disk drive as 40 MB. In Microsoft Windows XP, a 30 gigabyte drive has its capacity reported as both 30,064,771,072 bytes and 28 GB, which makes the precise meaning of the prefixes clearer. The confusion has sometimes led to litigation.

Binary prefixes using SI symbols

Name Symbol Value Base 16 Base 10
kilo k/K 210 = 1,024 = 162.5 > 103
mega M 220 = 1,048,576 = 165 > 106
giga G 230 = 1,073,741,824 = 167.5 > 109
tera T 240 = 1,099,511,627,776 = 1610 > 1012
peta P 250 = 1,125,899,906,842,624 = 1612.5 > 1015
exa E 260 = 1,152,921,504,606,846,976 = 1615 > 1018
zetta Z 270 = 1,180,591,620,717,411,303,424 = 1617.5 > 1021
yotta Y 280 = 1,208,925,819,614,629,174,706,176  = 1620 > 1024

The one-letter symbols are identical to SI prefixes, except for "K", which is used interchangeably with "k" (in SI, the upper-case or capital "K" stands for kelvin, and only the lower-case "k" represents 1,000).

These prefixes are in common use in contexts where accuracy is not important, such as file and memory sizes, but conflict with SI definitions. The names and values of the SI prefixes were defined in the 1960 SI standard, with powers-of-1000 values. As of 2005, standard dictionaries do not recognize the binary meanings for these prefixes.

BIPM (which maintains SI) expressly prohibits the binary prefix usage, and recommends the use of the IEC prefixes as an alternative (computing units are not included in SI).[8]

Some have suggested that "k" be used for 1,000, and "K" for 1,024, but this cannot be extended to the higher order prefixes and has never been widely recognised.

Although the prefixes denoting fractions of a bit or byte might theoretically find application in areas such as cryptography, data compression, and data transfer rates, they are not used in practice.

Informally, the prefixes are often used on their own. Thus one might hear about a "256K DRAM" (256 binary kilobytes), "a 160 MB HDD" (160 decimal megabytes) or "a 2M Internet connection" (2 decimal megabits per second). What units are being used, and whether the multipliers are decimal or binary, depends on context and cannot be determined by the units alone.

IEC standard prefixes

Name Symbol Base 2 Base 16 Base 10
kibi Ki 210 162.5 400 = 1,024 > 103
mebi Mi 220 165 10 0000 = 1,048,576 > 106
gibi Gi 230 167.5 4000 0000 = 1,073,741,824 > 109
tebi Ti 240 1610 100 0000 0000 = 1,099,511,627,776 > 1012
pebi Pi 250 1612.5 4 0000 0000 0000 = 1,125,899,906,842,624 > 1015
exbi Ei 260 1615 1000 0000 0000 0000 = 1,152,921,504,606,846,976 > 1018
zebi Zi 270 1617.5 40 0000 0000 0000 0000 = 1,180,591,620,717,411,303,424 > 1021
yobi Yi 280 1620 1 0000 0000 0000 0000 0000 = 1,208,925,819,614,629,174,706,176 > 1024

Example: 300 GB ≅ 279.5 GiB.

Approximate ratios between binary and decimal prefixes

As the order of magnitude increases, the percentage difference between the binary and decimal values of a prefix increases, from 2.4% (with the kilo prefix) to over 20% (with the yotta prefix). This makes differentiating between the two increasingly important as larger and larger data storage and transmission technologies are developed.

Name Bin ÷ Dec Dec ÷ Bin Example Percentage difference
kilobyte : kibibyte 1.024 0.976 100 kB ≅ 97.6 KiB +2.4% or −2.3%
megabyte : mebibyte 1.049 0.954 100 MB ≅ 95.4 MiB +4.9% or −4.6%
gigabyte : gibibyte 1.074 0.931 100 GB ≅ 93.1 GiB +7.4% or −6.9%
terabyte : tebibyte 1.100 0.909 100 TB ≅ 90.9 TiB +10% or −9.1%
petabyte : pebibyte 1.126 0.888 100 PB ≅ 88.8 PiB +12.6% or −11.2%
exabyte : exbibyte 1.153 0.867 100 EB ≅ 86.7 EiB +15.3% or −13.3%
zettabyte : zebibyte 1.181 0.847 100 ZB ≅ 84.7 ZiB +18.1% or −15.3%
yottabyte : yobibyte 1.209 0.827 100 YB ≅ 82.7 YiB +20.9% or −17.3%

Adoption

As of 2007, the IEC binary naming convention is not widespread, but its use is growing.

It is strongly supported by many standardization bodies and technical organizations, such as IEEE, CIPM, NIST, and SAE.[9][8][10][11] The new binary prefixes have also been adopted by the European Committee for Electrotechnical Standardization (CENELEC) as the harmonization document HD 60027-2:2003-03.[12] This document will be adopted as a European standard.[13]

The prefixes are beginning to be used in technical articles and software where it is important to avoid ambiguity. Examples of software that use IEC standard prefixes (along with standard SI prefixes) include the Linux kernel,[14] GNU Core Utilities,[15] Launchpad, GParted,[16] ifconfig,[17] and BitTornado. Other programs like fdisk and apt-get use SI prefixes with their standard decimal meaning.

Usage notes

The phrase "decimal unit" will be used to denote "SI designation understood in its standard, decimal, power-of-1000 sense" and "binary unit" will mean "SI designation understood in its binary, power-of-1024 sense." B will be used as the symbol for byte as per computer-industry standard (IEEE 1541 and IEC 60027; B is also the symbol for bel, a common non-SI unit used for ratio measurement).

Certain units are always understood as decimal even in computing contexts. For example, hertz (Hz), which is used to measure clock rates of electronic components, and bit/s, used to measure bit rate. So a 1 GHz processor performs 1,000,000,000 clock ticks per second, a 128 kbit/s MP3 stream consumes 128,000 bits (16 kB, 15.625 KiB) per second, and a 1 Mbit/s Internet connection can transfer 1,000,000 bits (125 kB, approx 122 KiB) per second, assuming an 8-bit byte, and no overhead.[18]

Pronunciation

It is suggested that in English, the first syllable of the name of the binary-multiple prefix should be pronounced in the same way as the first syllable of the name of the corresponding SI prefix, and that the second syllable should be pronounced as "bee." [10]

Computer memory

Measurements of most types of electronic memory such as RAM and ROM and Flash (large scale disk-like flash is sometimes an exception) are given in binary units, as they are made in power-of-two sizes. This is the most natural configuration for memory, as all combinations of their address lines map to a valid address, allowing easy aggregation into a larger contiguous block of memory.

JEDEC Solid State Technology Association, the semiconductor engineering standardization body of the Electronic Industries Alliance (EIA) in Standard 100B.01[6][19] defines in the binary sense K, M and G as prefixes to units of semiconductor memory, noting that these definitions are “only included to reflect common usage” and noting that ‘IEEE/ASTM SI 10-1997 state “This practice frequently leads to confusion and is deprecated.” ’. All standards published by JEDEC are still using the common usage, including end-user packaging recommendations for memory chips.

Many computer programming tasks naturally reference memory in terms of powers of two. For example, a 16-bit pointer can reference at most 65,536 items (bytes, words, or other objects), or an operating system might map memory in terms of 4,096-byte pages, in which case exactly 8,192 pages could be allocated within 33,554,432 bytes of hardware memory. It is convenient to informally express these numbers, respectively, as 64K items, or as 8K pages of 4 Kbytes (KiB) each within 32 MBytes (MiB) of memory. A programmer can easily mentally calculate that "8K × 4K is 32 meg" and get it exactly right, within this powers-of-two context. This convenience is likely one source of originally adapting "kilo" and "mega" from SI as shorthand for 1,024 and 1,048,576, as specialized jargon within a segment of the industry.

Almost all computer user tasks (and many high-level programming tasks) have no natural affinity or need for explicit powers of two. The consumer confusion between powers of 1000 and powers of 1024 may derive largely from some operating systems and applications that were originally written by and for programmers, and which thus reported quantities such as file sizes in familiar (to programmers) powers of 1024 while using SI (powers of 1000) abbreviations. Without such reporting, most users might not have been substantially exposed to powers of 1024, as the net memory available to users after various overheads is rarely a power of two. This legacy behavior of operating systems reporting sizes in powers of 1024 has continued to this day (in 2007) even in many GUI oriented operating systems intended mainly for non-programmers.

Hard disk drives

HDD manufacturers state capacity in decimal units. This usage has a long tradition, even predating the SI system of decimal prefixes adopted in 1960, as follows:

  • The first disk drive the IBM 350 (1950s) had 5,000,000 6 bit characters organized in 100 character sectors (i.e., blocks). This predates the SI system.
  • In the 1960s virtually all disk drives used IBM's variable block length format (called, Count Key Data or "CKD[20]"). Any block size could be specified up to the maximum track length. Blocks ("records" in IBM's terminology) of 88, 96, 880 and 960 were often used because they related to the fixed block size of punch cards. The drive capacity was usually stated in full track record blocking, for example, the 100 Megabyte 3336 disk pack only achieved that capacity with a full track block size of 13,030 bytes.
  • CKD continued into the 1990s and perhaps into this day. In the 1970s and 1980s most drives were specified with unformatted tracks (the unformatted capacity) with the particular block size and formatted capacity a function of the controller design. For example, the ST412 of IBM PC/XT fame had an unformatted capacity of 12.75 MB (not MiB) and with the Xebec controller and 512 byte blocks it formatted to and was advertised as a 10.0 MB (not MiB) HDD. Other controllers supported other block sizes resulting in other formatted capacities.
  • The advent of intelligent interfaces (SCSI and IDE) in the early 1990s took the block size decision into the drive and virtually all chose 512 bytes, for no reason other than that was what IBM had chosen when they picked the Xebec controller for the PC/XT. Capacity continued to be specified by the HDD manufacturers with SI prefix definitions.

Regardless of the HDD manufacturers' continuous practice of specifying with conventional SI prefixes, some systems' GUIs took the HDD capacity, reported by the operating system as a binary number without prefixes, and reported the HDD capacity in a mixed decimal number/binary prefix[citation needed] leading to some confusion. As of January 2007, most, if not all, HDD manufacturers continue to use decimal prefixes to identify capacity.[21]

Flash drives

USB Flash Drive and Flash-based memory cards like CompactFlash and Secure Digital are typically classified in "powers of two" multiples of decimal megabytes; for example, a "256 MB" card would hold 256 million bytes. Although the devices usually have at least the expected byte capacity, each manufacturer allocates different portions of the device's ultimate capacity for such things as wear levelling.

Floppy drives

The confused usage of decimal prefixes may have started in floppy drives where the drive and media manufacturers stated their unformatted capacity while various systems houses published differing formatted capacities as a consequence of their varying controller designs. It appears that some system manufacturers and OS vendors began reporting in what we now know as Ki bytes. A very confusing hybrid system developed with the double sided high density 3½" floppy disk, in which a "megabyte" means a thousand 1024-byte "kilobytes". Thus, as of 2005, manufacturers universally use the designation "1.44 MB diskette" for a product which holds neither 1.44×220 bytes nor 1.44×106 bytes, but rather 1.44×1000×1024 bytes (approximately 1.406 MiB, or 1.475 MB).

CD and DVD

CD capacities are always given in binary units. A "700 MB" (or "80 minute") CD has a nominal capacity of about 700 MiB (approx 730MB).[22] But DVD capacities are given in decimal units. A "4.7 GB" DVD has a nominal capacity of about 4.38 GiB.[23]

Buses

Bus bandwidth is given in decimal units. This is not because hard drive capacities use the decimal versions, nor because bit rates do, but because clock speeds do. For example, "PC3200" memory runs on a double pumped 200 MHz bus, transferring 8 bytes per cycle, and hence has a bandwidth of 200,000,000×2×8 = 3,200,000,000 byte/s.

The implicit use of decimal units to describe the capacity of storage devices has become a source of confusion as these devices are increasingly marketed to non-technical consumers. When a user buys a device advertised using decimal units, and installs it in a system that shows the available space in binary units, a misinformed user may be disturbed by the apparent discrepancy. As a result, there have been several lawsuits against companies who sell hard drives, flash memory devices, and computer systems that list drive capacities.

Several significant lawsuits have been filed:

  • On June 23, 2003, a Business Tort action entitled Matthew Leffert vs. Amazon.com, INC., was filed in the Superior Court for the City and County of San Francisco, Case No. CGC-03-421769. In this case, the plaintiff complained of false advertising in relation to how MP3 player storage is marketed.
  • In September of 2003, Lanchau Dan, Adam Selkowitz, Tim Swan and John Zahabian filed a lawsuit against Dell, Inc., Apple Computer Inc., Gateway, Inc., Hewlett-Packard Co., IBM Corp., Sharp Corporation, Sony Corp. and Toshiba Corp claiming their advertising deceptively exaggerates the real capacity of their hard drives.
  • On February 20, 2004, Willem Vroegh filed a lawsuit against Lexar Media, Dane–Elec Memory, Fuji Photo Film USA, Eastman Kodak Company, Kingston Technology Company, Inc., Memorex Products, Inc.; PNY Technologies Inc., SanDisk Corporation, Verbatim Corporation, and Viking InterWorks alleging that their descriptions of the capacity of their flash memory cards were false and misleading.
  • On July 7, 2005, an action entitled Orin Safier v. Western Digital Corporation, et al., was filed in the Superior Court for the City and County of San Francisco, Case No. CGC-05-442812. The case was subsequently moved to the Northern District of California, Case No. 05-03353 BZ.
    • Although Western Digital maintained that their usage of units is consistent with "the indisputably correct industry standard for measuring and describing storage capacity", and that they "cannot be expected to reform the software industry", they agreed to settle in March 2006 with June 14, 2006 as the Final Approval hearing date.
    • Western Digital offered to compensate customers with a free download of backup and recovery software valued at US$30.[2]
    • $500,000 were paid in fees and expenses to San Francisco lawyers Adam Gutride and Seth Safier, who filed the suit.[3]
    • Western Digital included the following footnote in the settlement:

      Apparently, Plaintiff believes that he could sue an egg company for fraud for labeling a carton of 12 eggs a "dozen," because some bakers would view a "dozen" as including 13 items.

See also

Specific units of IEC 60027-2 A.2

These units have individual articles:

Bit rates (data-rate units)
Name Symbol Multiple
bit per second bit/s 1 1
Metric prefixes (SI)
kilobit per second kbit/s 103 10001
megabit per second Mbit/s 106 10002
gigabit per second Gbit/s 109 10003
terabit per second Tbit/s 1012 10004
Binary prefixes (IEC 80000-13)
kibibit per second Kibit/s 210 10241
mebibit per second Mibit/s 220 10242
gibibit per second Gibit/s 230 10243
tebibit per second Tibit/s 240 10244
Multiple-byte units
Decimal
Value Metric
1000 kB kilobyte
10002 MB megabyte
10003 GB gigabyte
10004 TB terabyte
10005 PB petabyte
10006 EB exabyte
10007 ZB zettabyte
10008 YB yottabyte
10009 RB ronnabyte
100010 QB quettabyte
Binary
Value IEC Memory
1024 KiB kibibyte KB kilobyte
10242 MiB mebibyte MB megabyte
10243 GiB gibibyte GB gigabyte
10244 TiB tebibyte TB terabyte
10245 PiB pebibyte
10246 EiB exbibyte
10247 ZiB zebibyte
10248 YiB yobibyte
10249
102410
Orders of magnitude of data
Decimal
Value Metric
1000 kbit kilobit
10002 Mbit megabit
10003 Gbit gigabit
10004 Tbit terabit
10005 Pbit petabit
10006 Ebit exabit
10007 Zbit zettabit
10008 Ybit yottabit
10009 Rbit ronnabit
100010 Qbit quettabit
Binary
Value IEC Memory
1024 Kibit kibibit Kbit Kb kilobit
10242 Mibit mebibit Mbit Mb megabit
10243 Gibit gibibit Gbit Gb gigabit
10244 Tibit tebibit
10245 Pibit pebibit
10246 Eibit exbibit
10247 Zibit zebibit
10248 Yibit yobibit
Orders of magnitude of data

References

  1. ^ "Architecture of the IBM System/360," ©1964 gives memory capacity ranges of the various models in "Capacity 8 bit bytes 1 KB = 1024"
  2. ^ Amendment 2 to IEC International Standard IEC 60027-2: Letter symbols to be used in electrical technology — Part 2: Telecommunications and electronics [1]
  3. ^ IEC 60027-2 (2000-11) Ed. 2.0
  4. ^ A.J.Thor (2000). "Prefixes for binary multiples" (PDF). Metrologica. 37 (81).
  5. ^ "HERE COME ZEBI AND YOBI" (Press release). International Electrotechnical Commission. 2005-08-15. {{cite press release}}: Check date values in: |date= (help)
  6. ^ "IEEE-SA STANDARDS BOARD STANDARDS REVIEW COMMITTEE (RevCom) MEETING AGENDA". 2005-03-19. Retrieved 2007-02-25. 1541-2002 (SCC14) IEEE Trial-Use Standard for Prefixes for Binary Multiples [No negative comments received during trial-use period, which is now complete; Sponsor requests elevation of status to full-use.] Recommendation: Elevate status of standard from trial-use to full-use. Editorial staff will be notified to implement the necessary changes. The standard will be due for a maintenance action in 2007. {{cite web}}: Check date values in: |date= (help)
  7. ^ System/360 Model 91
  8. ^ a b "§3.1 SI prefixes". The International System of Units (SI) (PDF) (in French/English) (8th edition ed.). Paris: STEDI Media. 2006. pp. p. 127. ISBN 92-822-2213-6. Retrieved 2007-02-25. [Side note:] These SI prefixes refer strictly to powers of 10. They should not be used to indicate powers of 2 (for example, one kilobit represents 1000 bits and not 1024 bits). The IEC has adopted prefixes for binary powers in the international standard IEC 60027-2: 2005, third edition, Letter symbols to be used in electrical technology — Part 2: Telecommunications and electronics. The names and symbols for the prefixes corresponding to 210, 220, 230, 240, 250, and 260 are, respectively: kibi, Ki; mebi, Mi; gibi, Gi; tebi, Ti; pebi, Pi; and exbi, Ei. Thus, for example, one kibibyte would be written: 1 KiB = 210 B = 1024 B, where B denotes a byte. Although these prefixes are not part of the SI, they should be used in the field of information technology to avoid the incorrect usage of the SI prefixes. {{cite book}}: |edition= has extra text (help); |pages= has extra text (help)CS1 maint: unrecognized language (link)
  9. ^ IEEE Trial-Use Standard for Prefixes for Binary Multiples (PDF). New York. 2003-02-12. ISBN 0-7381-3386-8. Retrieved 2007-02-25. This standard is prepared with two goals in mind: (1) to preserve the SI prefixes as unambiguous decimal multipliers and (2) to provide alternative prefixes for those cases where binary multipliers are needed. The first goal affects the general public, the wide audience of technical and nontechnical persons who use computers without much concern for their construction or inner working. These persons will normally interpret kilo, mega, etc., in their proper decimal sense. The second goal speaks to specialists—the prefixes for binary multiples make it possible for persons who work in the information sciences to communicate with precision. {{cite book}}: Check date values in: |date= (help)
  10. ^ a b Prefixes for Binary Multiples — The NIST Reference on Constants, Units, and Uncertainty
  11. ^ Rules for SAE Use of SI (Metric) Units — Section C.1.12 — SI prefixes
  12. ^ HD 60027-2:2003 Information about the harmonization document (obtainable on order)
  13. ^ prEN 60027-2:2006 Information about the EN standardization process
  14. ^ "UNITS". Linux Programmer's Manual. 2001-12-22. Retrieved 2007-05-20. When the Linux kernel boots and says hda: 120064896 sectors (61473 MB) w/2048KiB Cache the MB are megabytes and the KiB are kibibytes. {{cite web}}: Check date values in: |date= (help)
  15. ^ "2.2 Block size". GNU Core Utilities manual. Free Software Foundation. 2002-12-28. Retrieved 2007-05-20. Integers may be followed by suffixes that are upward compatible with the SI prefixes for decimal multiples and with the IEC 60027-2 prefixes for binary multiples. {{cite web}}: Check date values in: |date= (help); External link in |quote= (help); line feed character in |quote= at position 37 (help)
  16. ^ "gparted-0.2 changelog". SourceForge. 2006-01-30. Retrieved 2007-05-20. changed KB/MB/GB/TB to KiB/MiB/GiB/TiB after reading http://www.iec.ch/zone/si/si_bytes.htm {{cite web}}: Check date values in: |date= (help); External link in |quote= (help)
  17. ^ "IFCONFIG". Linux Programmer's Manual. 2005-06-30. Retrieved 2007-05-20. Since net-tools 1.60-4 ifconfig is printing byte counters and human readable counters with IEC 60027-2 units. So 1 KiB are 2^10 byte. {{cite web}}: Check date values in: |date= (help)
  18. ^ Binary vs. Decimal Measurements
  19. ^ JEDEC Solid State Technology Association (December 2002), "Terms, Definitions, and Letter Symbols for Microcomputers, Microprocessors, and Memory Integrated Circuits", JESD 100B.01
  20. ^ http://www.answers.com/topic/ckd
  21. ^ On January 6 2007, a check of the websites of Fujitsu, HGST, Samsung, Seagate, Toshiba and Western Digital showed these companies (representing virtually all of the HDD industry by unit volume) specify capacity with the SI prefix definitions.
  22. ^ Data capacity of CDs
  23. ^ Understanding Recordable and Rewritable DVD

Further reading