Hard Drive Capacity Confusion, Lucidly Explained
mrklin writes "James Wiebe of wiebetech.com has written a clear example of how hard drive capacity is calculated (PDF file) by hard drive manufacturers (base 10) and OS (base 2). He failed to name how the capacity should be described, though."
With storage prices falling through the floor, does it matter to anyone except whiny nerds whether the byte counts are done in base 10 or base 2?
In the words of William Shatner, "Get a life!"
As far as ordinary users (i.e. anyone who doesn't have to deal with TLBs, memory pages, disk sectors and the like) are concerned, there's really no reason left to use binary units; 2^9 bytes per sector, 8 sectors per filesystem block, etc. are all low-level conveniences that the user shouldn't have to even notice. Though I personally am too used to the binary units to switch easily, the vast majority of users probably wouldn't even notice the difference, aside from their computers finally reporting the right size for their hard disks. Granted, overcoming the huge momentum for binary units will be difficult, but one could always consider it practice for getting the USA to accept metric.
This is not a matter of base-10 vs base-2... a base-10 number is written as "2875" for example. A base-2 number is written as "10100110". A base-16 number is written as "8A3F0"...
This is a matter of UNITS used - like inches vs. feet, or in this case GiB vs GB.
Geez, get the terminiology right...
About two years ago there was a debate about this. Can't remember the details of that debate. Maybe it was when those "mebibytes" were introduced. I still say now what I said then.
I think there should be "short megabytes" and "long megabytes", and the same for gigabytes. Like this:
Then all we need is to get hard drive manufacturers and OS vendors to state whether they are using short or long tons, er, gigabytes.
As to abbreviations, take Donald Knuth's suggestion. Use the capital letter twice to suggest binaryness. 1 MMB = one long megabyte; 1 GGB = one long gigabyte. I like this much better than the now-standardized MiB men-in-black abbreviation for long megabytes (which are still not called long megabytes in the standard, they are called mebibytes, which sounds silly and no one uses it).
Who's with me?
Sunlit World Scheme. Weird and different.
Those are too hard to pronounce. Who not just distinguish them by prefixing the metric ones with the word "metric", as we do with tons and metric tons.
kilobyte = 1024 bytes
metric kilobyte = 1000 bytes
Oh man, that just brought back memories. A bunch of geeks sitting at Round Table pizza for a BBS party all trying to get the highest in base 2 decimals. 512, 1024, 2048, 4096, 8192, etc. all shouting to be heard.
No wonder you'd never see a woman at those parties, must have scared them off. of course, nowadays, you see women geeks much more often, thank God.
1f u c4n r34d th1s u r34lly n33d t0 g37 l41d Capitalization really works: i helped my uncle jack off a horse
The only relevant issue is the meaning of words like kilobyte, megabyte, and gigabyte. Wiebe describes how you can arrive at two different answers for drive capacity depending on how you define the word "gigabyte," but does so completely uncritically. For example, he describes the drive manufacturer logic and writes that "the drive's claim of 123.5 GB is verified with this simple mathematical formula." But the issue is what the word "gigabyte" means, and the formula presented sheds no light on the word's conventional usage or etymology. I personally was raised to use these terms to correspond the numbers that are powers of two. Wiebe doesn't give me any point of reference to shed light on whether it's reasonable to use the meanings drive manufacturers do. (Of course I already know the answer, but that's beside the point.)
Wiebe uses some other odd logic, exemplified in point 3.7. He writes that the consumer was never cheated, because a drive advertised as having a capacity of 123.5GB had just that in "decimal based" capacity. This is a bizarre way to characterize the complaints. Consumers who believe they were cheated aren't claiming they didn't get 123.5GB for any definition of the word gigabyte. They're claiming they didn't get 123.5GB by the conventional definition of the word as commonly used in connection with computers. In my view, they're right, although I don't personally get too upset about it.
Oh, ye - so you want:
1 kg = 1024 g
1 metric kg = 1000 g
1 km = 1024 m
1 metric km = 1000 m
Thanks, but no thanks.
Hey Jimmy, assuming you're using FAT32 as your XP filesystem, which uses 73.8 MB of space for every gigabyte, not just 73.8 megs one time, that adds up to roughly 8,856MB of space used for the filesystem. Which on a labeled 123.5 GB drive, leaves you with roughly 115GB of space! Wow! The HD manufacturers were right!
The OS *do* use a negligible amount of drive space in these days with 100+ GB hard drives. And you're confusing file systems with operating systems. Just because an OS allow you to use a file system that waste resources, doesn't mean the OS itself use a lot of drive space.
Beware: In C++, your friends can see your privates!
...he ignores the fact that HD manufacturers are happy using bytes which are 8 bits, all the while flaunting the established convention that MB/GB refers to binary megabytes and binary gigabytes. Why don't they specify the size of their HDs in bits?
But personally I strongly reject this "kibibytes" attempt at CS revisionist history. Stick with what CS people have been using as measurements for decades, I say,
Why shouldn't CS people stick to what the rest of the sciences have been using for decades, that "kilo" means 1000? This CS thing of making "kilo" stand for 1024 is an attempt at revisionist history.
There's always another perspective.
"Our computers are binary, so the hard drives that we put in them should be measured using the binary (Base-2) representation."
Eh, no. Binary is interesting to computers, not to humans. Humans care about numbers multipliable by 10.
A human can understand the concept of a byte, a single letter. However, a human, unless he's really into computers, doesn't care much about how many bits are in a byte. It may be 8-bits per byte, but what about error correction etc?
A human can easily multiply 1000 by 1000 and know what the answer is, but ask him to do 1024 by 1024 and he's going to scratch his head. But if he knows that he's got 1,000 useful bytes/characters, then he doesn't need to know about how many bits are in a byte, and the powers of 2, etc.
So no, I don't agree with you. Human readability is at issue here. If somebody really wants to know how many bits are on an HD, they're wanting to know more than most people who'll plunk down money for a drive.
(note: I realize you didn't necessarily mean bits, but I did kind of need to make that point so the rest of my statement made more sense. Hope I didn't sound like I was misrepresenting what you said.)
"Derp de derp."
No, because "kilo" is, in fact, a metric prefix. So a simple kilobyte should have its standard meaning as the SI unit prefix implies. You might however call the other one "non-metric," "binary," or "bastard" :-)... problem is, no one will use such terms. It is understood as an unwritten rule that anything suffixed with "byte" implies that the prefixes "kilo," "mega" etc. refer to 2^10, 2^20 etc. factors. Even more interesting, I suppose the "general public" doesn't even know how much a gigabyte is anyway, you might as well call it a hogshead - the simple rule is that 20 Quux is less than 40 Quux, whatever the unit may be... so, since people will only compare the size of their hard drive (please, spare the obvious jokes here...) to that of other hard drives (and not memory or whatever), it would be good enough to ensure that at least for a given type of storage medium, all manufacturers calculate their unit prefixes the same way.
I would think that any greater change (like writing MiB or MMB vs. MB) will only create more confusion. I just remember when, a couple of years back, German computer manufacturers were forced to specify things like floppy disk sizes and screen diagonals not only in inches, but in centimeters - ever tried to buy an 8.3 cm floppy? That just doesn't work. The computer business just has its own weird set of units, but in fact no one really cares (except for maybe some nit-pickers going for the law suit), and a change of prefixing would, while being scientifically correct, not serve any good purpose. (Before you say "then we Americans can continue using pounds and miles too!" - that's a totally different question in my opinion that bears issues of "compatibility" and "ease of use" etc. etc.)
No, dummy. He is talking notation, not numbers. We have to change the words we use to describe numbers in computer science, not the numbers themselves.
The "kilo" in kilobytes is an abuse of SI metric notation. "kilo", "mega" and "giga" mean 1000, 1 000 000, and 1 000 000 000 to physicists, engineers, chemists, and the general scientific community. How arrogant or short-sighted were computer scientists to think that they could simply re-define these prefixes to mean 1024, 1024 * 1024, and 1024 * 1024 * 1024?
The real solution is to stop abusing widely accepted terminology and switch to the suggested "kibibytes", "mebibytes" and "gibibytes". Yes, it sounds stupid, but that's only because it's unfamiliar. It's not as stupid as using one set of prefixes for two different purposes. In fact, it's that very usage that led to this stupid conflict between "hard drive manufacturer gigabytes" and "operating system gigabytes".
From a consumer standpoint it makes sense to make 1K = 1000 bytes and so on, but from a computer viewpoint, it's best to leave it as is. All in all, people should research what a kilobyte is (in terms of how many bytes it is) before they become experts in storage capacities for computers.
Geez. Repeat after me: Computer are intended to be used by PEOPLE, not the other way around. Nobody, I repeat, nobody, outside of the CS community uses kilo, mega, or giga to mean anything but 10^3 (10 to the power of 3), 10^6 or 10^9. Why should Joe Sixpack on the street, or even a Physics professor with no CS knowledge, have to "research" what "gigabyte" means in the context of computer science? It should mean 1 000 000 000 bytes, plain and simple. If someone wants to express the number 1024^3, they should make up a new word such as "gibi-" instead of using existing terminology.
Of course, this will NEVER happen, because in any given community, the majority of people would rather stick with widely accepted and entrenched mistakes than bother to change their behaviour or ideas. Just witness the ridiculous C notation for assignment:
a = a + 1
In many other programming languages and mathematics "=" means "equality" NOT assignment; saner languages use ":=" for assignment. Yet, because of C's popularity, we will be stuck with this abuse of notation forever, especially since any new languages (such as Java) will try to cater to C programmers.
If you can't see why this is a mistake, consider this. In a language with "=" for equality and ":=" for assignment, you only have learn one new thing: that ":=" means assignment. In C, you have to learn two things: "=" means assignment, NOT equality and "==" means equality. How stupid is that? Everyone already knows that "=" means equality; why change that? Everyone already knows that "kilo" means 1000; why change that?
Now, thanks to the "grandfathers of CS" or whoever, I have to remember my standard SI prefixes (okay, that's no problem), I need to know that in most CS applications kilo, mega, giga, etc. mean 1024, 1024^2, 1024^3, etc. and I need to remember that in CERTAIN CS applications kilo, mega, giga, etc. have their standard meanings.
Oh sorry, but what was I thinking? It's the hard drive manufacturers who are stupid.... (sarcasm). Did you ever think that one of the reasons they use the standard definition of "giga-" to calculate drive sizes is that most NORMAL PEOPLE (i.e. the majority of computer users) don't know that giga means 1024^3? More to the point, how many ordinary people care to calculate (or memorize) the exact value of a gigabyte? (Of course, I'm sure another reason is that they get to "inflate" their hard drive sizes).
To summarize my overly long post, one of the main reasons computer consumers are constantly being ripped off, misled and confused is that CS geeks like us keep forgetting or never cared that computers are nothing more than tools for people. Maybe you need to take a Human-Computer Interaction course or something, if you can't understand that.
Or we could just beat the hard-disk manufacturers with a stick until they understand that most people expect 1 kilobyte to be 1024 bytes :P
You are out of touch. If you conducted a scientific survey of 100 random adults who own PCs and asked them:
"How many bytes are in a kilobyte?" you really think that more than 50 would answer "1024"?
I'd be surprised if more than 10 did, personally.
100% of the non-geek population equates kilo with base 10, not base 2.
This issue reminds me of a practice used in another industry. The auto industry commonly reports horsepower and torque for their cars as measured at the engine's crank/flywheel vs at the wheels. While the measurements themselves are an accurate reflection of an engine's general performance alone you typically do not just buy an engine, you buy a system which is the car. When the engine's performance in measured within the context of the car--meaning at the wheels--then the truth is revealed. That revelation shows, on average, a loss of 10-20% when power is measured at the wheels vs the crank. Which spec do you think a manufacturer is going to release?