Looking for Clarification on Binary Prefix Logic / History vs. SI Prefix
Solution 1:
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:
- Mega-
- Gigabyte
- etc.
- Orders of magnitude (data)
- For additional reference, Binary numeral system
This has also been addressed on Super User before:
-
What is the difference between a kibibyte, a kilobit, and a kilobyte?
(I’m sure you know the difference between a bit and a byte, so you can ignore that aspect of it. But note that “nibble” can also be spelled “nybble.”) - What is the origin of K = 1024?
- Is it true that 1 MB can mean either 1000000 bytes, 1024000 bytes, or 1048576 bytes?
And for laughs, see this xkcd comic:
(but, of course, don’t take it seriously).