# Looking for Clarification on Binary Prefix Logic / History vs. SI Prefix

Recently I've looked into the SI and Binary prefixes used for digital storage / computing in general, and I'm still not sure I understand the logic behind the Binary prefix (actual question at the bottom).

Current Understanding (summarized):

SI:

Seems quite simple, every time you end up with 'total # of bytes == current prefix value * 1,000' : use the next largest prefix, which can be expressed as '1000 ^ 1 + the amount of SI prefixes you have already used starting at kilo'. Simple enough.

Binary:

So, apparently memory works better / easier when using units of data that are powers of 2 (the 'systems architecture' explanation of this is over my head to be honest, so I'll just take their word for it). Also, in the early days of computers before Binary prefixes were officially established, a machine with 1024 bytes of memory (which would be the smallest amount of memory using a power of 2 that breaks 1000 bytes), designers decided to use the already established SI standards and describe this amount of memory as a kB even though they weren't actually equal (it was 'close enough' more or less).

This is where my understanding starts to break down, I guess that since the SI standards 'go up' to the next prefix by using the formula (base 1000 ^ 1 + used prefix #), then the equivalent in Binary is (base 1024 ^ 1 + used prefix #) since 1024 is closer to 1000 than 512 or 2048 using powers of 2, and therefore more closely relates to the SI formula.

Actual Question:

So, if that is correct, at this point in time, why use Binary prefixes at all? Is it really that 'bad' to just say '1.024 kB' instead of 1 KiB (or whatever unit you are measuring)? I suppose listing 4 GiB of ram as 4.29497 GB is a bit goofy (Is that the reason? It is just easier to use rounded numbers?). That, and is my general understanding of these prefix standards correct?

Any clarification is appreciated, thank you for reading.

• What, exactly, is your question? “Why use Binary prefixes at all?” Seriously? K means 1000, M means 1,000,000, etc. (from the Latin). They were used to mean 1024, 1024², etc., because they were “close enough” — but the higher you go, the greater the discrepancy. People introduced the binary terms to create formalisms to replace the ways the terms were used informally. It seems that you know the answer. Do you really believe that it is OK to refer to 2³² (i.e., 2^32) as 4.29497 G (which is still only an approximation; the exact value is 4.294967296 G) when you can refer to it exactly as 4 Gi? – Scott May 15 '16 at 3:47
• @Scott : Your point about the rounding is well taken. I suppose what I'm getting at is situations where say, a consumer buys a '500 GB HDD' then looks in Windows and wonders why they don't have 500 GB of storage since Windows also lists GB when they are displaying GiB. Or like Ram that list '4GB' when they also mean 4GiB. Essentially it seems that in practical application the Binary standard gets ignored and when displaying GiB as GB the person writing the spec is already rounding the number of bits. Why not just use one standard or the other at that point if we ignore one or the other? – Joe May 15 '16 at 10:19

Well, we use the SI (a.k.a. decadic or Metric) terms because they are the correct terms for weights and measures (a kilogram = 1000 grams, a kilometer = 1000 meters, etc.) and because they’ve been around for a long time (the kilo- and milli- prefixes were introduced in the 1700s, and they derive from Greek and Latin, which were used 2K years ago [har har] ).  We use the binary terms when they are appropriate (in computer contexts) because they are the correct terms in those contexts.

But the binary terms were introduced less than 20 years ago and formalized less than 10 years ago.  And they are not new terms that go with new concepts (as, for example, “laser” was).  They are new terms for established concepts (for which the wrong words were being used).  Therefore, they are slow to catch on (because many people are still using the old terms incorrectly).

Which reminds me: you seem to be confused on this.  When somebody says “4 GB” when he means 4,294,967,296 bytes, he isn’t “rounding the number”, because he doesn’t mean “4.294967296 GB”.  He means “4 GiB”, and he’s using the wrong term.  Because he hasn’t learned the new terms yet, or because he doesn’t understand why the difference is important, or because he’s afraid that the people that he’s talking to will understand “GB” but not “GiB”.  The system of binary terms isn’t being ignored; it’s still in the process of being learned, accepted, and adopted.

This is covered exhaustively in Wikipedia.  For example, in the Binary prefix article:

The computer industry has historically used the units kilobyte, megabyte, and gigabyte, and the corresponding symbols KB, MB, and GB, in at least two slightly different measurement systems.  In citations of main memory (RAM) capacity, gigabyte customarily means 1 073 741 824 bytes.  As this is the third power of 1024, and 1024 is a power of two (210), this usage is referred to as a binary prefix.

In most other contexts, the industry uses the multipliers kilo, mega, giga, etc., in a manner consistent with their meaning in the International System of Units (SI), namely as powers of 1000.  For example, a 500 gigabyte hard disk holds 500 000 000 000 bytes, and a 1 Gbit/s (gigabit-per-second) Ethernet connection transfers data at 1 000 000 000 bit/s.  In contrast with the binary prefix usage, this use is described as a decimal prefix, as 1000 is a power of 10 (103).

The use of the same unit prefixes with two different meanings has caused confusion.  Starting around 1998, the International Electrotechnical Commission (IEC) and several other standards and trade organizations addressed the ambiguity by publishing standards and recommendations for a set of binary prefixes that refer exclusively to powers of 1024.  Accordingly, the US National Institute of Standards and Technology (NIST) requires that SI prefixes only be used in the decimal sense:[1] kilobyte and megabyte denote one thousand bytes and one million bytes respectively (consistent with SI), while new terms such as kibibyte, mebibyte and gibibyte, having the symbols KiB, MiB, and GiB, denote 1024 bytes, 1 048 576 bytes, and 1 073 741 824 bytes, respectively.[2]  In 2008, the IEC prefixes were incorporated into the IEC 80000-13 standard.

[Presumably Wikipedia is using the convention of writing large decimal numbers with groups of three digits, separated by spaces, to respect the people who use `.` instead of `,` as a “thousands separator”.]

Similar paragraphs appear on other pages.  In Metric prefix:

In some fields of information technology it has been common to designate non-decimal multiples based on powers of 1024, rather than 1000, for some SI prefixes (kilo, mega, giga), contrary to the definitions in the International System of Units (SI).  This practice has been sanctioned by some industry associations, including JEDEC.  The International Electrotechnical Commission (IEC) standardized the system of binary prefixes (kibi, mebi, gibi, etc.) for this purpose.[23]

And in Kilo- :

A second definition has been in common use in some fields of computer science and information technology, which is, however, inconsistent with the SI definition.  It uses kilo as meaning 210 = 1024, because of the mathematical coincidence that 210 is approximately 103.  The reason for this application is that binary values natively used in computing are base 2 and not the base 10 which is used for the SI prefixes.  The NIST comments on this confusion: “Faced with this reality, the IEEE Standards Board decided that IEEE standards will use the conventional, internationally adopted, definitions of the SI prefixes”, instead of kilo for 1024.[4]

More Wikipedia resources:

This has also been addressed on Super User before:

And for laughs, see this xkcd comic:

(but, of course, don’t take it seriously).

• Wow, very thorough post. Thank you very much for the clarifications, I really appreciate the effort. One last note on 'rounding' though, just to be clear about the '4GB' example: I'm talking about situations like reading Ram specs on a manufacturer's website. They list said Ram as '4GB'. I'm sure they do it because they know most consumers don't know what GiB means, yet they still could put 4.xx GB on spec (seems like something the marketing dept. would do because 'more is better'). Yet they still list it as 4GB. I'm probably not explaining this well, but your explanation of it is well taken. – Joe May 17 '16 at 13:58
• Also, that comic is great. – Joe May 17 '16 at 14:00