24

What was the decision making process that lead to the IEC to create "kibibytes", "mebibytes" and so forth?

To me it seems like kilobytes were well established as 1024 bytes, both by programmers using them and by electronic engineers. Indeed, even now the 1024 byte kilobyte is commonly used when talking about memories of various kinds.

JEDEC had also standardized on the 1024 byte kilobyte, and it remains in widespread use by billions of JEDEC standards compliant devices.

So I'm interested in the arguments used and the decision making process that lead the IEC to decide that kilobytes would be redefined as 1000 bytes, and the creation of the rather awkward "kibibytes".

Edit: I'm asking if there is any information on why they chose to make kilobyte = 1000, rather than keeping with the JEDEC standard and the common parlance of the time and making kibibyte = 1000. Not the merits of either choice, but details of how the IEC came to make the one they did.

  • 6
    I'm sure there is much more to it, but from when I first saw it, I took the redefinition to be a marketing move - i.e., it takes fewer transistors, less magnetic media, etc. for 1,000 than 1,204 and for 1,000,000 than for 1,048,576 so the manufacturers jumped on the chance to make things seem bigger without extra cost. But I could be just a little skeptical... – manassehkatz-Reinstate Monica Jul 3 at 15:04
  • 5
    I don't have any inside info as to the reasoning, but I think that the growing discrepancy between 1000^N and 1024^N as N increased created an apparent need to coin terms that distinguished the forms for larger N (it's less than 0.3% for N=1, and 4% for N=2, but almost 10% for N=4), which in turn created a "why not" for the smaller forms. What makes this ironic is while many things are counted in multiples of 1024 bytes (which had an uppercase "K" prefix which could sensibly have been pronounced "kay"), the larger powers are used almost exclusively for identifying specific powers-of-two. – supercat Jul 3 at 15:57
  • 9
    The IEC themselves provide an explanation on their web site, but reproducing it here would require written authorisation from them which I don’t have. – Stephen Kitt Jul 3 at 16:38
  • 8
    There are/were two "standards" -- the actual SI standard that says kilo=1000 (etc) and the de facto standard of computer people that says kilo=1024 or 1000 depending on context and everyone is expected to know the right one in any context. I count myself in the latter camp. However, the kibifans do not agree with me. – another-dave Jul 3 at 17:14
  • 5
    Mandatory XKCD reference: xkcd.com/394 (the second to last, called "drivemaker's kilobyte" is a plausible illustration why someone might have lobbied IEC to redefine kilobyte to 1000) – vsz Jul 4 at 8:41
57

TL;DR;

I'm asking if there is any information on why they chose to make kilobyte = 1000,

Because kilo means 1000. It simply doesn't stand for 1024. The same way 13 inches aren't a foot.


So I'm interested in the arguments used and the decision making process that lead the IEC to decide that kilobytes would be redefined as 1000 bytes,

There was no redefinition, as 'kilobytes' isn't a unit of its own. It's 'kilo' as prefix with the fixed definition of 1000 and 'byte' as, well, a byte. So kilobyte always meant 1000 bytes.

These prefixes are part of the International System of Units (SI) — though, they had already been used before, since introduced with the metric system in 1795. Within SI there are no different units for the same thing (like inch, feet, yard, furlongs, chains and miles for length) but always only one (meter for length, ampere for current, and so on). To use them in different circumstances they are prefixed according to powers of 10. A very convenient system.

And it was sloppy engineers who used this convenience to describe certain binary values with somewhat close values — as 2^10 is 1024 and thus close to 1000. These were never official units in any way, just a kludge to get along. Standard documents always used power of 10 pefixes — which leads, by the way, to the effect of serial transmissions always being decimal - a 9.6 kbit line transfers 9600 bits per second, not 9830 :)

When computers came out of the closet in the 1980s, people stated to recognize that these 'kilobytes' aren't really a kilo of bytes but different, so it was common to capitalize the K, as the SI prefix uses a lower case k. Nice idea - as long as memories stayed in the range of a few dozen to a few hundred KB - but when 1024 KB were reached, it broke, as the SI prefix M is already uppercase.

In the late 1980s/early 1990s it became obvious that there is a need for a clear meaning, so an international standard was proposed - and accepted in the late 1990s.

It's now more than 20 years later ... heck, not even the English complained that long about the loss of their non-decimal currency.

and the creation of the rather awkward "kibibytes".

The binary prefixes are anything but awkward. They offer an easy, convenient and well-defined way to operate with (almost) the same prefixes as for any other unit, but now making it binary, which does make a lot of sense for computing, doesn't it?


Postfix:

It may be useful to add a bit of common sense before going into rather pointless nagging about how it sounds or how much we're used to the imprecise way it always has been. The main point about these binary prefixes is in writing, not speaking. When talking there is context. Continuing to say 'kilobytes' when KiB are meant should be fine. After all it's much like asking for a pound of meat in a metric country works, though hey will give you 500g :))

Just write the prefix always uppercase and add a lowercase 'i' for binary and there's no more confusion.

  • Comments are not for extended discussion; this conversation has been moved to chat. – wizzwizz4 Jul 5 at 14:27
  • Is that last bolded piece of advice confusingly written or is it just me? Surely you mean to always use an uppercase letter only for the binary prefixes, since the prefix for (the decimal) kilo is the lowercase k, as you said yourself earlier in the post. – ilkkachu Jul 6 at 16:03
  • Your comment about not having multiple unit types for the same measure doesn't seem to make sense here. Isn't byte divisible into bits, the smallest (non-quantum) unit of data? Why isn't kilobits the SI unit of choice, since it gets rid of the eight-bit-byte baggage? – ndm13 Jul 7 at 6:59
  • @ndm13 Somehow I fail to see your reasoning. Not having multiple units is a requirement on its own, and not related that something can be further divided - isn't it? Beside, you're undervalue the groundbreaking fact of settling on 8 bits to a byte. – Raffzahn Jul 7 at 10:03
36

To me it seems like kilobytes were well established as 1024 bytes, both by programmers using them and by electronic engineers

They are not the only people though. The term got confusing mostly because of disk manufacturers who preferred base 10 because your disk capacity was a larger number. Perhaps the most egregious nonsense comes from the high density floppy disk which is described as having 1.44 Megabytes where a Megabyte is defined as 1000 kilobytes and a kilobyte is defined as 1024 bytes. i.e. 1.44 × 1000 × 1024 which is plainly ridiculous.

Also "kilo", "tera" and "mega" are standard SI terms meaning various powers of 1,000 (in base 10). It should, therefore, be a good idea to have different names for the base 2 versions.

Disclaimer: I personally ignore the base 2 names and abbreviations because they are stupid.

  • 2
    Floppy disks are generally written in sectors of 512 bytes each. Using the term "megabyte" to describe units of 1953.125 sectors, or saying that a disk which is holds twice as big as a 720K disk is a 1.40625MB disk, would seem far more absurd than describing capacity as multiples of 10240000 bytes. – supercat Jul 4 at 1:18
  • 8
    +1 for the disclaimer! As someone that has been designing microprocessor systems since before the days of the personal computer I only came across these binary terms a couple of years ago and have managed without them for over 35 years. – uɐɪ Jul 4 at 7:07
  • 9
    I never realized that the MB in 1.44MB was actually 1000x1024. So what is that in IEC units? 1.44 kKiB? kilokibibytes? You'd better not stutter saying this... – dim Jul 4 at 12:47
  • 6
    @dim : Did you also never realize that those "3 ½ inch disks" are not 3.5 inches? :) – TOOGAM Jul 4 at 14:47
  • 11
    @dim It's 1440 KiB and no other way. You don't stack prefixes unless you're in a MMO game. – Therac Jul 4 at 17:02
11

I agree that we should never have redefined kilobyte, megabyte, etc. But the definition is older than the use in computers. Which wasn't much of a problem when the difference between the two unit prefixes is fairly small, but with higher numbers the differences become significant.

1) A kilometer is 1000 meters. A kilowatt is 1000 watts. a kilogram is 1000 grams. It makes absolutely no sense to make a kilobyte 1024 bytes.

2) The difference between a kilobyte and a kibibyte is 2.4%. That's not nothing but really no huge problem. The difference between a megabyte and a mebibyte is 4.8%. The difference between a terabyte and a tebibyte is 9.95%. You're slowly getting to significant differences there.

3) Just because we made mistakes in naming things several decades (half a century) ago, doesn't mean we can never change things. In fact changing things sooner would have been better.

  • 3
    I get your reasoning. You are right. Kilo = 1000 - that is a fact. But when I was learning about computers, given that 1024 is a natural power of two, and completely logical from a binary perspective, I never thought twice about Kilo != 1024. Quite the opposite, it seemed so natural. Further, people that didn't know this subtle difference clearly demonstrated their lack of expertise (I was a little snarky in my youth)... Now, I'm an old dog and 1024 is so engraved in my brain, anything else is simply confusing. I avoid that KiB nonsense like the plague. – Geo... Jul 5 at 14:42
  • 1
    Well for kilo the difference isn't that big. But if you're from a country that uses the metric system (which, let's be honest, america should be), you'd obviously be familiar with kilometers and kilograms. Interestingly also it's never megameters and megagrams .... – xyious Jul 5 at 14:54
  • 1
    Ironically, when I was in elementary school learning measument systems I transferred schools mid year and managed to learn the metric system twice and miss the English imperial measuments completely. But even knowing my metric prefixes, and using them frequently in electronics, chemistry, etc. I still never thought twice about Kilo, Mega, Giga, etc. being multiples of 1024. Again, it's just so natural. – Geo... Jul 6 at 21:29
10

While JEDEC memory standards were using 1024 Byte Kilobytes at the time, many magnetic storage devices were using 1000 Byte Kilobyte size for several reasons.

To explain where the 1024 Byte value comes from, it is a nice convenient 2^10 value.

However, this use of power of twos only applied to RAM and ROM. Magnetic media did not use power of two dimensions, and thus when marketing saw that they had to chose between two numbers, the irrelevant 1024 based standard of memory or 1000 based traditional metric standard. They chose the traditional metric standard, since neither produced a nice round number and the 1000 based number created a large number.

This of course caused untold issues, and neither side was really wrong. Disk drives were not JEDEC memory devices. IEC, thus decided to settle the matter on disk drives by having two different units for magnetic data storage. Kibibytes and KiloBytes.

  • 3
    For many kinds of storage media, the logical unit is multiples of the nearest multiple of 1000 to the addressing multiple, so a 1.2MB floppy would be 2400 blocks of 512 bytes each, while a 1GB NAND flash would have 524288 blocks of 2112 (not 2048!) bytes each. – supercat Jul 4 at 1:15
  • 3
    JEDEC? (filler) – Eric Towers Jul 4 at 7:59
  • JEDEC is a RAM standards organization. – Robert Wm Ruedisueli Sep 10 at 2:36
  • NAND flash is available in a wide variety of block sizes. The odd block sizes are usually the result of the internal controller layer using odd sized metadata and error checking segments in the block, causing the used segment to be odd. This results in the common 2112 block size in many managed NAND flash devices. Raw NAND flash devices (which rely on firmware or software management) tend to have power of two block sizes before error checking is added by the software or firmware. Many flash devices have integrated microcontrollers running the firmware. – Robert Wm Ruedisueli Sep 10 at 2:41
1

The source here is a confusion of standards.

SI is the Système International. It governs physical quantities like Kilo's and meters. In this system, the quantity information is measured in Joules per Kelvin.

In computing, information is measured in bits. Joules Per Kelvin is just too inconvenient.

There's no confusion when using SI prefixes with SI units. A Megajoule per Kelvin is 1.000.000 Joules/Kelvin. But this is a whole lot - a modern harddisk might contain barely one nanoJoule/Kelvin (0.0000000001J/K)

Going back to bits, "SI-insipired prefixes" are used. But a kilobit is 1024 bits, and it's been that way since the introduction of the Intel 1103 : the first RAM chip in the world, with a 1 kbit (1024 bit) capacity.

The real confusion started when harddisk makers found out that they could sell bigger numbers by intentionally mixing the SI Giga- prefix with the non-SI unit "byte" (8 bits). This was fraudulent, and multiple class action lawsuits were settled with refunds for the buyers (around 2007).

IEC unfortunately came up with yet a new system, using non-SI units with both SI prefixes in their SI meaning and an entirely new set of prefixes (kibi etc). But in a sense this is no surprise; that's what engineers do when there are conflicting standards. (Bonus)

  • 9
    Please don't spread that bullshit about harddisk makers "found out". They always did this (since at least the sixties), still do, and always will. It wasn't until the mass market saw that the little text in Windows showed the wrong number that they started to complain. Why Windows uses a prefix that was only ever used for RAM when showing space on a hard drive beats me. Why not for network speeds? – pipe Jul 4 at 19:57
  • 2
    Right. Unlike memory, disks have often had non-power-of-two capacities, and in fact the capacity of a disk is/was often variable based on formatting. This is a mass-market complaint, in the same way that "my 17" CRT does not have a 17" viewable area" was a mass-market complaint. – another-dave Jul 5 at 15:54
  • An expression like "bits/sec" combines SI and non-SI units (in some contexts, 1/sec is pronounced as "Hertz", but often--even in SI contexts--it's pronounced as "per second". Given a phrase like "1.2 kilobits per second", it's not always clear whether the kilo prefix modifies the "bits" or "per second". – supercat Jul 7 at 22:22
1

(As other replies, this is not the direct answer, just some hanging around.)

When I worked at Internet service provider, we ran into problem with that prefixes: in communications, stream rate is defined at units of 1000, like 64 kbits = 64000 bits. OTOH, many programs count sizes in portions of 1024.

After a few attempts to fix this, the final decision was as follows: a usual customer contract contained definitions section that stated:
traffic is measured in:
1 kilobyte = 1000 bytes.
1 megabyte = 1024 kilobytes.
1 gigabyte = 1024 megabytes.
(This edition appeared approx. in 2001.)

I can't insert emoticons into reply in StackExchange, but I'd like to put here a shockingly astonished face. 😞? 😢? 😱? None is good here, but Munch's "Cry" is rather close.

So I'd support a general tendency to separate two suffix sets. OTOH, the particular choice of -bi is utterly brain-damaged: nearly nobody can distinguish kibi from gibi in a noisy environment. The prefixes shall be radically different in pronounciation.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.