1MB is one million bytes, and files do not intrinsically come in power-of-two sizes.
It may still make sense to use MiB for RAM though.
All else being equal, I see it as better to under-promise and over-deliver than the reverse:
In a world where there was one commonly-accepted meaning for MB (ie, the world where computers were invented, proliferated and became ubiquitous), and one assumed meaning (however logical it may be), users without the requisite nugget of binary knowledge would be positioned to be pleasantly surprised that they had "more than they paid for". In the case of file-sizes, this is to that users detriment, but in the case of the potentially more litigious issue of amount of drive space or RAM being purchased, this is to the users advantage.
For those that simply knew, on the other hand, things were just as expected.
Conversely, in the world where we now have two justifiable hard meanings for MB (one historical, one "canonical"), and people who go about endlessly correcting each other about them, we have handed the "things are as expected" situation to the everyday users, while the rest have inherited a mix of "less than I paid for" and "confusion".
All-up, not a worthwhile trade IMO.
The first commercial drive, the IBM 305, stored 100,000 characters on each of 50 platters, for 5 million total characters. Drives have been a base10 number of sectors for my entire lifetime.
If that was correct, this HN post wouldn't exist.
For the 50 years preceding Apple's intervention, any example that can be produced of MB equalling 1,000,000 bytes, likely has about one MiB-worth of counter-examples showing it equalling 1,048,576 bytes.
You'd be surprised...
M has been the accepted prefix for 1,000,000 since the 19th century, widely used in science, networking standards and disks, decades before Apple made any change itself...
As was the common convention, all advertising materials, all reviews, all documentation and all common understanding was that the 64 in its title represented 64KB as in Kilobytes.
This same convention, for MB = Megabytes, and GB = Gigabytes and all of these representing powers of 2 (no matter how "incorrect" that may be), was proliferated through the overwhelming majority of advertising, commentary and documentation both previously through the 70's, and through the 80's, 90's and 2000's.
This was the convention commonly understood for the many-decades-long duration of the birth of modern computing.
To attempt to change it after decades of intrenchment for the "technically correct" version and gain loads of confusion, and almost nothing in return, is a bad value proposition.
To borrow your C64 example, the most popular harddrives to add to a C64 were Lt.Kernal(Fiscal) drives. The first model, sold as 10MB, was 256 bytes per sector, 32 sectors per track, for 1224 tracks. Giving us a raw capacity of 10,027,008 bytes - 10MB or 9.5MiB.
You're talking about it being a convention in home computers when the vast, vast majority of them simply didn't have harddrives - While the machines that did have harddrives were already using base10 (an RK05 was 1.2Mwords - 1,200,000 words. Twice the RK04's 600kwords).
The convention has always been base2 for RAM and base10 for storage. And yes, it's always caused confusion. Just as the convention has always been bits/sec instead of bytes/sec for linespeed, even though this also causes confusion to this day.
The awkward truth is that none of this was ever intended to be consistent. From the day we started selling computers to people who weren't 100% sure what these numbers meant, it's always been "close enough".
If we may now agree that the original, widespread understanding of a KB was of 1024 bytes, and a MB of 1024 KB, and that only later did a widespread impression start to be spread that actually a KB|MB could be 1000 instead, we strike at the very heart of this issue:
Adopting an alternative "standard" spearheaded by particular (and not all) storage manufacturers incentivised in the first instance to use the previously well-established terms KB and MB duplicitously in their favour, strikes me as the worst way to resolve any consumer confusion surrounding it.
As countless others already wrote here, that (and all your examples) where the case (and remain the case) for memory.
Disks, network, etc, have used the powers of ten since forever...
Hard disks are not floppy disks or memory, they always used base10 since half a millenium, and Apple just continues the same, like everybody else.
End of non story.
Except when it, of course, isn't. $10M is certainly not ten megadollars.
Even science isn't that consistent about it. The SI base unit for mass is the kilogram. Yet we don't have megakilograms. We have megagrams, but nobody uses them. Instead we use tons. Somehow kilotons and megatons are used though.
If we're willing to accept the above then why couldn't we have stuck with the powers of 2? Digital information at some level is going to become base 2.
This reminds me of something I was unaware of until very recently; the decibel (dB), is one tenth of a Bel. The discussion was that you'll never confuse a B(byte) with a B(bel) because we never specify 10dB as 1B, and we almost never need to specify a 10th of a byte.
But back to your point - we use base10 for everything but RAM. So if we'd stuck to one system to avoid confusion, RAM probably wouldn't have won.
The unit of currency is the dollar. There is no units of currency that corresponds to 1M dollars.
The SI system of units devised a systematic way to define derived units that reflect a certain amount expressed in the base unit.
Currency don't have the benefit.
Money is not covered by S.I./metric units anyway, so not sure what's the point of this argument.
And even at that, while M here is the "mega" unit, the value 10M is still 10 million (1010^6) dollars (not 102^20 dollars).
M$10 looks kind of clumsy, though.
Division by powers of 1000 ceased to be an expensive operation relative to user interaction a very very long time ago. And even back when it was, I am sure would the error have been in the order of 10% (as it is now with TB vs TiB), they absolutely would have taken the more expensive but more correct operation.
I just see no advantage in continuing to resist the unification of the meaning of prefixes. And where people prefer the old way for some nostalgic reason, just put the 'i' in there and you are good.
Bytes do not. Bytes are made up of 8 bits, and bits are powers of 2. Neither of these facts have any relation to base10.
There is inevitable shoe-horning happening on either side of the argument.
If a new metric was to be introduced to provide for those who wish for "everything to be neat and tidy, excepting for the base unit", they should be the ones using a new term, while the rest of everyone continues using the incumbent one.
Overriding the commonly-accepted and widely-used term with a secondary meaning is a sub-optimum solution.
ISO and IEC standards defined a byte as 8 bits in the 1990s. But they also defined kilo and mega as powers of 10.
Powers of 2 were never used exclusively.
I've only made the correct claim that the logical continuance the employment of powers of 2 into units of scale was sufficiently widespread as to be considered convention, something those who created the standards you cite also readily acknowledge.
This sounds like a lame excuse for fraud.
Megabytes had a very specific meaning. Afterwards, for any random reason, that definition was turned upside down to mean about 5% less, and a terabyte to mean 10% less.
If you're going to buy a HD and you end up finding out it provides 100MB or 200MB less than advertised, you'd righteously feel defrauded.
That SD card you have? Base 10. Flash drive? Base 10. Hard drive? Base 10. SSD? Base 10. The only outlier here is RAM being base 2, but that’s because it’s in a grid, so 16 GB is easier to write than 17.18 GB.
I remember quite clearly at the time HDD's first started proliferating that many (intelligent) people were legitimately fooled and felt cheated.
In fact I wouldn't be at all surprised if there were lawsuits about it.
But like many things on this earth, sometimes the less logical and more confusing is what ends up being the accepted norm.
Why metric and imperial? Makes no sense, is confusing.
Why left side right side driving? Makes no sense, is confusing, causes accidents.
Bits and bytes had a standard, it was widespread, understood, logical and useful for those who most had to deal with them. Then one group went out, very likely seeing dollar signs, and decided to be different. They should be the ones adopting the incumbent, logical standard, not the rest of us adopting their less-useful new one, and definitely not ending up with two conflicting standards with a single lowercase letter separating them.
It is not logical to apply the same standard uniformly to everything regardless of its inherent characteristics. It's also not always the best course of action to blindly apply any rule without making exceptions. Bits and bytes already and inherently do not fit into a base10 paradigm, but a base2 paradigm.
Making an exception for the application of scale measurements for those units makes sense and worked perfectly fine, for decades. Confusion was created by those adopting a different standard, for dubious reasons.
The issue of consumer ignorance, which was largely created by storage manufacturers and later now embedded by Apple could have been easily and simply resolved with a tiny bit of education.
Indeed, at least through the 80's it often was.
It's actually not that hard for people to remember one four digit number to multiply or divide by, after they've had an explanation of why that's important and make sense. Building this into the UI along with explanation is also not difficult. Exactly the same as many other important things that are prone to being misunderstood are explained.
Everyone would be better off for it.
There is just none
In the standard metric system, Kilo / K = 1,000 units of something, Mega / M = 1,000,000 units of something (and down in scale also by dividing by 1,000). This applies for anything where the standard singular unit is 1, and assumes it can also be multiplied by, or divided into 1,000 pieces. For example: 1 gram equals 1,000 milligrams.
A computer however, does not have one base unit, but two: the bit and the byte. Neither are usefully divisible by 1,000. Conversely, multiplying the byte by 1,000 hides aspects of its structure that are essential to consider when building and programming a computer system. Considering that the metric system is about notating scale, and that there are issues in both directions of scale when applying the metric system to computers, it made sense to modify it slightly when doing so.
Luckily, there is a number very close to 1,000 that does usefully represent the inconvenient internal structure of a bit and a byte, at least at larger scales. That number is 1,024. Early computer scientists decided that for computers, Kilo / K = 1,024 bytes. It followed that Mega / M was 1,024 x 1,024 = 1,048,576 bytes, and so on. (1 GB = 1,024 x 1,024 x 1,024 = 1,073,741,824 bytes, or close to 1 billion bytes).
This "1,024 rule" for the computer application of metric system, matches the physical structure of computer memory exactly - and crucially, the parts of a computer that physically access memory - making it straightforward for programmers and hardware designers to work with and talk about.
And, from an alternate 1990's addendum to the previous:
It also means that when you see a Hard Drive advertised with a size of 240 MB, you can be sure that you are in fact getting 240 x 1,048,576 bytes of storage, or 251,658,240 bytes (well over 251 million bytes). That 251 million is, on appearance, quite a bit "more" than 240 MB is one of the bonuses of the "1,024 rule" for the computer metric system that can impact you directly. You're welcome!
Sticking with the first, widely-proliferated meaning we already had, which existed because of its usefulness, along with its direct honouring of the structure of what it was describing, is IMO the superior choice. This versus cementing the source of the confusion - the secondary meaning - even further by introducing it not only as an additional standard, but also as the de facto, nullifying years of text and understanding and rendering it inaccurate.
To me, that was, and is absolute madness.
But "over-promise" could mean multiple things. If I'm buying a hard drive "over promise" means larger. If I'm figuring out how much space a game will take up on my hard drive before I buy it, "over promise" means smaller.
Okay, that question actually has an answer: the IEC. Unfortunately, lots of software disagrees with them, including Windows, because for some strange reason the IEC thought it was a good idea to redefine an existing measurement and then add a new term to mean what the old term used to mean.
The result was 100% predictable. Files now have two different sizes depending on which software you're using, and it's very difficult to tell which definition is in use. Even worse, the difference between these measurements is quite large, and converting between them isn't simple.
As much as I wish the United States used the metric system, I don't think we should redefine an inch to equal two centimeters...
Well, also the S.I?
Preffix "mega", initial "M", short for 10^6 since 1873...
M (as in MB) has meant 10^6 (1,000,000) in the S.I / metric standard since the 19th century...
Given the foundation of computing is binary, yes, files actually do come in power of two sizes.
1 and 0. Two. Base two.
From then, the way our bits, then bytes are structured.
8 bits to a byte for 8 bit addressing.
That's why 1KB was always 1,024 bytes.
Base 2: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024.
Recognize some of those numbers? Common ram sizes, also the increments in how many bits our architectures have been. These numbers remained constant because the foundation of computing was always Base 2.
Using Base 10 to calculate total storage space is a cheat when sector sizes are Base 2. There's no reason to use a different system (Base 10) for storage if Ram is Base 2 unless you're trying to inflate the specs of how much storage is being sold with a system.
Which is how the 1 MB = 1,000,000 Bytes bullshit originally started.
Until you re-format storage and ram sector sizes to be Base 10, and along with it, the number of bits of addressing our computing system uses, (Hello brand new architecture!) then there's no way to justify the renumbering of storage to Base 10.
As often in life there is not a single truth.
The reason for re-standardization effort was deflection of legal responsibility for misleading marketing:
I have two PS/2 era drives that predate your "rebranding". One, 20MB (actual 21.3MB or 20.3MiB) has a CHS geometry 612x4x17. The other, 40MB (41.5MB or 39.5MiB) has a CHS geometry of 1038x2x39.
None of these values are powers of two (other than heads, because platters happen to have two sides)
I'd argue that all we're seeing here is the long, long tail of lazy shortcuts taken in the early-home-computer era. Not a truth, a lazy shortcut - that software took as convention and hardware didn't.
Magnetic and paper tape, drums, delay lines and hard disks are (imperfect) hacks to have more memory due to cost of RAM.
And its volatility.
If the disk was sold on its power-of-2 capacity, then display the file sizes in their power-of-2 sizes.
On a larger scale, this is a giant mess. Apple is the only one who'd actually try and fix this. Both in terms of power (hardware & software) and in clout.
I'd also add their "bravery", similar to dropping the 3.5mm jack.
I was amused to discover a few years ago when I had to order an E1 network connection at 2 Mbit/s that it was actually 2048000 bit/s, perhaps what you might call a 2 kikbit/s line now-a-days ;-)
Kilo, mega, and other prefixes predate computer storage, and SI is beautiful because it is consistent. The computer industry decided to use standard prefixes with non-standard (base-2) quantities. Now let's cut our losses and return to consistency with everything else.
Exponentially increasing? 10^3, 10^6, 10^9, 10^12
(I kind of hate being that guy, but I mean it in a positive and helpful sense)
Using MiB avoids confusion, misuse, and ambiguity.
Uniformity (what you're also calling "consistency"), if it's even warranted here, would be far lower priority and could wait.
The hardware is using sizes in powers of 2 because it's the only sensible thing to do, and numbers would be very annoying for users if the units didn't account for it.
Changing to gibibytes does very little - the users confused by 1024 do not know about the alternate prefixes.
Furthermore, if you just add the "i" to all measurements, then you have accomplished nothing with regards to SI prefix proliferation. Everything but one dialog in a single OS will still use 1024, and HDD manufacturers will still use 1000.
I say this because most regular folks don’t even know what a gigabyte is so asking them to understand what a gibibyte is does not really “solve the problem” of consumer understanding.
So now there are three standards.
> However, if you think about, it does make sense for the computer to use the same standard as the HD manufacturers.
No, it makes more sense for hard drive manufacturers to stop using a system that artificially inflates their disk size advertisements.
Somehow they're getting away with this.
You could, if you really wanted to, write 1 million raw bytes to the disk. But you'd need special software to read and write it, because de facto software expect there to be a master partitioning table or whatever it's called.
My point was that storage device manufacturers somehow get away with redefining units. No one else does this. Imagine if you bought a 1L bottle of milk, only to see in fine print that "1L = 800 ml".
Storage manufacturers have been using decimal prefixes for decades, you should probably get over it at this point.
Or are they not quite half as wide?
- ISPs advertising network speeds in megabits per second instead of megabytes (who ever uses megabits otherwise???)
- Banks advertising interest-bearing accounts with APY and advertising loans with APR.
Do folks have other good examples? I’m sure there are lots.
EDIT: baud is not exactly the same as bits/second. But in those times, it was pretty much the same. https://stackoverflow.com/questions/20534417/what-is-the-dif...
Media encoding also commonly uses bit rates, e.g. 320kbps MP3.
Regarding media encoding, there I’m less sure. I guess those values were originally in small enough absolute values, and have not continued to climb exponentially, such that measuring in bits maybe continues to make sense.
Anyway, thanks for sharing those examples.
* ISPs selling “up to” speeds.
* Screen sizes measured in inches-diagonal, without reference to aspect ratio.
* Cost of US products advertised without sales tax.
* Lots of things that “only cost X per day” to make the amount look small compared to the consumer’s monthly income.
* Supermarkets purposefully showing you price-per-unit for one product and price-per-weight for another allegedly comparable product.
* “Miles per gallon” still being used in countries where fuel is sold by the litre.
* Purposefully hard to multiply numbers used in monthly instalments. “Only 27 payments of $79!”
* Use of 9’s. “Only $999.99!”
* Food and drink manufacturers which are legally allowed to describe the quantity of an ingredient as zero if it is below a certain very small amount.
* CPUs sold as “up to X GHz” where that speed can only be sustained in specific and unmentioned thermal scenarios.
* Any product where the price is kept the same over time by decreasing the size over time, without mentioning it.
* Misdirection away from an important metric, like how AWS shouts about the great per-GB storage cost of S3 but doesn’t shout so loudly about the egress data transfer rate.
* Getting really basic now: simply putting a number in the product name to imply superiority. This is why Microsoft had to call the second Xbox the 360: because “Xbox 2” would sound less than its main competitor, the PlayStation 3.
Some of these probably go beyond the theme of misleading measurements and into the realm of my general hatred for the marketing profession.
Similarly, Samsung jumped from S10 to S20 for the 2020 model year, which makes great sense to consumers despite being nonsequential.