Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Why does the discrepancy in the number of bytes in a kilobyte exist? In some places I've seen the number 1024 (210) while in others it's 1000 (and the difference gets increasingly large with M, G, T, etc.).

This is not a discussion about whether it should be 1024 or 1000 (though you can discuss it in the comments) but about where/when this situation originated and/or became widespread.

As far as I know, Linux and hardware manufacturers never use the 1024 variant. That, and hearsay, make me think MS-DOS made this version common, but what are the facts?

share|improve this question

closed as not constructive by Linker3000, techie007, Doug Harris, Wuffers, hyperslug May 24 '11 at 13:34

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

22  
One representation is in binary (2^10, or 1024) while the other is in decimal (10^3 or 1000)... –  Trezoid May 23 '11 at 11:04
12  
If you are looking for specific people to blame, point towards hard drive manufacturers. It makes their devices look like they have more capacity when it is expressed in decimal MBs, GBs, etc. They've always done this I believe but it hasn't been until fairly recently that the gap between decimal and binary has grown wide enough to matter significantly. –  ultrasawblade May 23 '11 at 11:52
21  
@ultrasawblade: You want to blame HDD manufacturers for being one of the only groups that use the term gigabyte correctly? –  paradroid May 23 '11 at 11:57
12  
It just always seemed to me to be an understood thing that 1K=1024 with anything computer related before 20GB or so drives became commonplace. This also roughly coincides with the time when many non-technical people started using PCs on a regular basis. Vast amounts of computer literature (technical and nontechnical) from the early 90's and before doesn't mention anything about "decimal" KBs or "kibibytes". –  ultrasawblade May 23 '11 at 13:38
12  
@paradroid: gigabyte originally meant 1024 mb (and mb = 1024 kb, etc). It was retconned to mean 1000 because HDD manufactures insisted on using it wrong. Admittedly, this does depend on what you consider "right" since kilo does mean 1000, but within computer science, kilobyte was always 1024 for technical reasons until it was changed in 1999. –  James May 23 '11 at 15:40
show 12 more comments

6 Answers

up vote 61 down vote accepted

It goes back quite some time, and is detailed here. It looks like you can blame IBM, if anybody.

Having thought about it some more, I would blame the Americans as a whole, for their blatant disregard for the Système international d'unités :P

share|improve this answer
28  
It's always easy to blame the Americans. –  Notinlist May 23 '11 at 15:11
13  
@Notinlist: It is a joke. –  paradroid May 23 '11 at 15:15
5  
It reminds me an epic scene of the Pulp Fiction movie... The one with the question about the "metric system". :-) –  Pierre May 23 '11 at 15:55
7  
@Notinlist It is easy to always blame the Americans. That's why we do it so much. That and the fact that its fun. –  Singletoned May 23 '11 at 15:57
3  
The 1961 entry there is interesting, in that it mentions "65k" - being the first order of magnitude which can show a clear difference between "k=1024" and "k=1000, rounded", it comes down clearly for the latter. In 1964, on the other hand, everyone is using the binary meanings. –  Random832 May 23 '11 at 16:20
show 8 more comments

All computing was low-level at the beginning. And at low level programming the number "1000" is totally useless and they needed prefixes for larger amounts so they reused the SI ones. Everyone knew it in the field, there was no confusion. It served well for 30 years or who knows.

It's not because they were Americans so they needed to break SI at all costs. :-)

There is no programmer who I know and says kibibyte. They say kilobyte and they mean 1024 bytes. Algorithms are full of the powers of 2. Even today, "1000" is a really useless number between programmers.

Saying kibi and mibi is just too funny and draws attention from the subject. We happily give it away to the telecommunication and disk storage sectors :-). And I will write kibibytes on user interfaces where non-programmers may read it.

share|improve this answer
3  
It's even funnier to say when talking about bits - "mibibit" –  James May 23 '11 at 15:52
3  
I think KiB, etc is supposed to be pronounced kilobinarybyte, etc and not kibibyte. –  Lie Ryan May 23 '11 at 15:52
2  
@Lie Ryan, using prefixes like "kilobinarybyte" was a proposal that ultimately failed, and had different abbreviations than kibibyte did anyway. See en.wikipedia.org/wiki/Binary_prefix –  Ben Lee May 23 '11 at 20:12
2  
Of course, it is perfectly acceptable to say "kilobinarybyte" and it is actually more transparent and less silly-sounding than kibibyte, but that usage is not sanctioned by the IEC. –  Ben Lee May 23 '11 at 20:14
3  
so would it be fair to pronounce km as kilodecimalmeters? –  JustJeff May 23 '11 at 21:18
show 5 more comments

It is correct and makes sense for technical people to use 1024 = 1K in many cases.

For end users it is normally better to say 1000 = 1k because everybody is used to the 10-based number system.

The problem is where to draw the line. Sometimes marketing or advertising people do not really succeed in the "translation" or in adapting technical data and language to end users.

share|improve this answer
12  
Technical people should know that 1024 bytes is really a Kibibyte (KiB), but know that the term is not known by non-technical people. –  paradroid May 23 '11 at 11:20
6  
Who says it's correct? Kilo has meant 1000 for centuries, so IMO they should never have used it for 1024. –  Bart van Heukelom May 23 '11 at 12:40
20  
The byte is not an SI unit; KB means "kilobel" (granted, a unit you'd never want to use unless you were describing the sound, if any, produced by the Big Bang.) –  Wooble May 23 '11 at 13:43
10  
@njd: The C64 has 65536 bytes of RAM. By convention, memory size is specified in kibiBytes, data transfer rates in kilobits, and mass storage in whatever-the-manufacturers-think-of-now-Bytes. Harddrives use T, G, M and k on the label, Windows reports the size in Ti, Gi, Mi and ki. And those 1.44MB floppys? Those are neither 1.44MB nor 1.44MiB, they are 1.44 kilokibibytes. That's 1440kiB or 1'474'560 bytes. –  Third May 23 '11 at 14:19
5  
The kiB, etc variants are fairly new, though. I don't think they were in use when this problem arose, certainly - I was under the impression they were made exactly to resolve it! –  Shinrai May 23 '11 at 15:17
show 5 more comments

Blame semiconductor manufacturers (they provide us with binary hardware only)[1]

Better yet: blame logic itself (binary logic is just the most elementary logic).

Better yet: who shall we blame for the wretched decimal system?

It has far more flaws than the binary system. It was based cough on the average number of fingers in the human species cough

Oooo...

[1] I want my quantum three-qubit computer!!! Now!

share|improve this answer
26  
I think you'll find the average number of fingers is less than 10 </pedant> –  Rory Alsop May 23 '11 at 16:55
1  
@Rory: ^ that was a good laugh –  Mehrdad May 23 '11 at 19:22
2  
@Rory: "fewer" </pedant>. Or is it? Hang on a minute, I aargh... –  outsideblasts May 23 '11 at 20:07
add comment

1024 is not to be blamed it is a very good thing indeed, as it is the reason computer (digital) can be as fast and as efficient as they are today. Because the computer only use 2 value (0,1) it takes out the hardship and complexity (inaccuracy) of anolog system out of the equation.

It would be more complicated if we said a kilobyte is 1000 bits because 2 to what power is 1000? so even 1 kilobyte would be inaccurate because it will have floating points or an approximation.

But i largely blame marketing for selling a 8 gigabytes* and adding this in the small print

* 1 gigabyte is 1,000,000,000 bytes. 

it is a shame really, that is the same thing with connection speed, your ISP will say 1.5Mbps instead of telling you ~150 kiloBytes. it's just very misleading

share|improve this answer
3  
In saying how large a file of 15682 bits is, or how fast such a file can be transferred over a network, powers of 2 play no role. And that's the context where the most confusion is. –  Bart van Heukelom May 23 '11 at 18:59
2  
Ultimately the file is stored in memory pages, which are aligned to binary power boundaries. When sending over TCP, the window size in which packets are sent is multiples of powers of two. When the file is stored on the hard drive, it's stored in blocks of powers of two. I understand what you're saying, but kilobyte = 1024 (or at least multiples of powers of two) is ingrained in computing too much. –  FryGuy May 23 '11 at 22:10
1  
to be fair, networking has always used bits as their base. –  Synetech May 24 '11 at 3:55
1  
The first 5.25" floppy held 109,375 bytes and was advertised as "109.4 Kbytes". I guess they did this for evil marketing reasons, too? You think it would be more logical to write it as "106.8 KB"? And tape drives and processor speeds and modem speeds are all measured in decimal to deceive us? Please. –  endolith Jul 25 '11 at 21:21
1  
@Ibu: the difference between 1,000,000,000 bytes and 1GB is 0. Indeed, why would floppy manufacturers maliciously inflate their numbers when the difference is so small? They wouldn't. They used 1000s because it's logical, obvious, and correct, not because they're part of a conspiracy to defraud customers. Hard drive manufacturers have been measuring in 1000s since the MB years, too, for the same reason. –  endolith Jul 25 '11 at 23:14
show 4 more comments

When you consider that numbers on computers are binary, and 2^10 is 1024, it makes perfect sense. It's much easier to work with 1024 rather than 1000, because you can easily divide by 1024 using only integer math and bit shifting. Dividing by 1000 is a much more expensive operation, which may need floating point math.

E.g.

bytes = 1 073 741 824
kilobytes = bytes >> 10 = 1 048 576
megabytes = kilobytes >> 10 = 1024
gigabytes = megabytes >> 10 = 1
share|improve this answer
    
You seriously think the computation time is relevant? Why don't computers process "km" as "1024 m", then, if it's so hard to convert? –  endolith Jul 25 '11 at 21:24
    
@endolith Yes I think so, at least historically. While it may be negligible today, in the early days when every CPU-cycle was at a premium, a quick and easy calculation that gave an decent answer would be preferable for something like this. Especially if people knew by convention that 1KB meant 1024 bytes. –  Jo-Herman Haugholt Jul 31 '11 at 10:47
add comment

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