When 1 GB Is Really 0.9313 Gigabytes
An anonymous reader writes "When it comes to RAM, as every geek knows, 1 GB does not mean 1 billion bytes.. it means 2**30 (1,073,741,824) bytes. However, several decades ago "they" decided that GB, MB, and KB would be interpreted differently when it comes to disk drives; 1 GB means exactly 1 billion bytes. Ed Bott points out that Microsoft's marketers and Windows kernel developers aren't on the same page when it comes to these units: the marketers use the more generous decimal interpretation, while Windows measures and reports capacity using the binary (2**30) measure. Careful customers who bother to check what they've got have been known to get peeved by the discrepancy."
Article is a forum post from 2008 talking about things we knew before then.
Why was this posted?
To make it even worse, the first comment in that forum states:
> this is common knowledge for most ppl here.
timothy should get fired. He's not doing what he is supposed to be doing in a very grossly incompetent, outright insulting, way.
Yeah yeah, this is old news.. but nevertheless, this is one of the only things in the IT industry that really peeves me off.
Its not just Windows, but Linux and every other OS uses the base 2 notation for KB, MB, GB, TB, etc.
Why can't we just oust hard drive manufacturers for what they're really doing (ripping us off) and force them to just base 2 notation :/
You can tell how powerful someone is by the magnitude of the crime they can commit and be able to get away with.
mdadm --add /dev/md69 /dev/sde3 /dev/md69 /dev/md69 /dev/md69 /dev/md69
mdadm --grow --bitmap=none
mdadm --grow --raid-devices=5 --backup-file=/root/grow_md69.bak
mdadm --grow --bitmap=internal --bitmap-chunk=65536
resize2fs
And I was surprised that my filesystem grew only by 1800 GB ! Still a bit more space for rsnapshot cron backing up all my family's PCs twice per day. But still... I wanted 2TB more, not 1.8TB.
#
#\ @ ? Colonize Mars
#
Finally adopt the official prefixes.
If you are talking decimal, use GB. If you are talking binary, use GiB.
Recently I decided there were now so many of these ludicrous stories, it was a waste of time to post regularly. As of this very second, I'm beginning to wonder if it's even worth the bother to parse the daily Slashdot headlines.
True, the discrepancy is old news but as capacity increases the difference is becoming more noticeable.
It would be so much better if "they" were persuaded to return to using the correct measurement.
Likewise I say "true GB" for 1024-based and "salesman's GB" for 1000-based. Because the 1024-based units ARE the true units, and the 1000-based units WERE created just to make hard drives look bigger than they actually were.
-uso.
What you hear in the ear, preach from the rooftop Matthew 10.27b
There is no big grand conspiracy of evil marketing people versus the grand world of computer people.
1G = 10^9 in every area.
1Gbit/s = 1e9 bits per second (noone complains)
1GHz = 1e9 cycles per second (noone complains)
1GT/s = 1e9 transfers per second (noone complaines)
1GB = 1e9 bytes (oh the horror! the evil marketing oh woe woe woe)
The only reason it that 1GB = 1GiB every caught on is because RAM really relies on a power of 2 address bus, so it's always very closely tied into powers of 2 and it's convenient to round that to its nearest decimal equivalent in order to talk about it succinctly.
There was never any reason to do it for anything else, and hard disk manufacturers pretty much never used GiB when they meant GB.
And even the venerable 3.5" floppy was an unholy mixture of KB and KiB multiplied together.
SJW n. One who posts facts.
What's all that confusion. XKCD had that sorted long time ago:
https://xkcd.com/394/
Please pay attention!
Slashdot is not an education site, and this is still news, because nothing has changed. You simply don't hear about it that often, because your right, most people know about this marketing[decimal] vs real[binary] measured value, and the whole lies/justifications around it. This is simply a new spin on things...[I quite like the way the heading has chosen to show marketed:real] Microsoft [perhaps unfairly; everyone else does it] because they represent the real values within the OS, and lie about the real values on the packaging...something that is magnified [and fairly] that their OS occupies so damn much of these limited storage on their[not your] portable devices...including its own surface brand...and "No", external storage does not replace internal storage, like having USB slots does not replace internal storage on a Desktop PC; its a feature [a good one].
In context of this article today I am moving an OS from 100GB failing drive onto a 40GB Good one, and did not remove enough data [because I guesstimated wrongly] before cloning it, so after removing more data [I used bleachbit] I'm now re-cloning it; its set to finish tomorrow!?
The fault lies 100% at the feet of the, typically, totally technically incompetent marketers.
Hard drives used, in the long ago good old days, to be measured in base 2 sizes. Back in the days of 20 Meg and 40 Meg and 80 Meg, they were measured using base 2 and so buying an 80 Meg HD, you got 80 "computer" Megs. This was also back in the days of 10+ different HD makers (lots of competition).
Then at some point an idiot marketer was looking for any edge to make his/her companies product look different than the competition. And they discovered that if instead of dividing the count of bytes by 1024*1024 they instead divided by 1000*1000, the result was a larger number. I.e., a 200 Meg hard drive could now be advertised as 209 Meg. Since 209 was larger than 200, they felt this gave them a "one-up" on the other guys. And once the first idiot marketer did this, the rest of the idiot marketers soon followed suit, because they could not have their own products looking "smaller" on the shelf, and the result is that now HD's are the only computer component that is advertised in base 10 sizes.
The idiot marketers are also why when you go to buy a hard disk that is only about 15 cubic inches for the disk itself you find the box to be about 5 cubic feet on the store shelf. Not all of that 5 cubic feet is for "padding". 99% of it is to make the box look larger on the shelf.
1000-based units WERE created just to make hard drives look bigger than they actually were.
Invoke Poe's law.
I honestly can't tell.
SJW n. One who posts facts.
Actually, when it comes to correctness: the International System of Units defines kilo-, mega- and giga- as powers of 10 instead, not powers of 2. I think it is much clearer for a user to define a megabyte as a million bytes. How memory is handled inside a computer is something developers care about, no user should be bothered with it. So all in all I agree with the marketing-people, albeit for different reasons.
Pretty good is actually pretty bad.
and by the same standards, 2^10 is a KiB
and yes, why is this geek news when anyone with either a passing interest, or who has ever done a wiki crawl, will know this?
It pays to be obvious, especially if you have a reputation for being subtle.
My thoughts exactly. This is an article appropriate for The Today Show or something where you are informing the illiterate masses, not something worthy of posting on Slashdot.
BTW, this reminds me - a couple of weeks ago on the Today show, they were talking about new cool comptuer terms. One they were talking about was "animated GIFs". I felt like I jumped into a time machine and went back 20 years into the past.
My thoughts exactly. This is an article appropriate for The Today Show or something where you are informing the illiterate masses, not something worthy of posting on Slashdot.
BTW, this reminds me - a couple of weeks ago on the Today show, they were talking about new cool comptuer terms. One they were talking about was "animated GIFs". I felt like I jumped into a time machine and went back 20 years into the past.
Slashdot is full of illiterate masses now
SI is irrelevant in this case, because it obviously does not meet the physical reality of a RAM chip. Some things are just not a multiple of 10, get over it.
Can I light a sig ?
A terminology they just up and made up later. I have never heard anyone actually use it.
Ask yourself, when is the last time you heard someone refer to mebibytes and gibibytes. Everyone uses metric prefixes.
So what that back in the day the computer scientists hijacked kilo/mega/giga because 2^10/2^20/2^30 was close enough to 10^3/10^6/10^9?
Sure, there's a standard now, the unpopular KiB/MiB/GiB, but no-one uses it.
Regardless, the number that should be reported when describing capacity should be the base 2 number when talking about RAM - as RAM is by its nature a base 2 capacity mechanism. The capacity can be described exactly this way.
But for hard drives, where the storage is in effect linear across multiple cylinders, heads, etc, is base 2 what should be used - ignoring historical usage? Well, block sizes are in powers of two... but we don't have a power of two number of blocks. We therefore don't have a capacity number that can be described totally accurately using the base 2 numbering system.
And SSDs? Due to bad blocks, and reserved storage area, we are turning something that was a base 2 capacity memory system into something with less capacity.
And what about the files themselves? They're not powers of two in size, and indeed they waste capacity at the end of the file because the basic unit of storage in a drive is the formatted block size (512 bytes, 4KB, etc). Maybe block based systems should be advertised as offering "2 Billion Formatted Blocks* (* 512 byte blocks)"! In addition that file is likely compressed in some way that you can't consider that it will use the same space in memory when loaded.
A strong argument is that because computer RAM is xGB, meaning x * 2^9 bytes, then we should use the same unit for other things in a computer that are expressed in GB, because in the end it is clearer to the user who can compare the two things, e.g., "the computer has 500 times more HD than RAM".
I don't know about hearing, but I have read GiB and MiB at the Linux kernel logs since quite a long time.
This is what pisses me off about using, say, Ubuntu and Windows 7 on the same computer. Several years ago Ubuntu (and hence derivatives like Linux Mint) changed their units policy such that 1 KB = 1000 bytes, not 1024 bytes as Windows still does. Hence files sizes will appear differently between the two systems, which is terrifying if you're manipulating data between such operating systems.
I call tentatively BS on this explanation:
https://en.wikipedia.org/wiki/Timeline_of_binary_prefixes
While far from definitive, this would seem to suggest that the first reference equivocating 1k with 1024 with an article in 1964 by Gene Amdahl, followed by a similar assumption of equivalence in a 1965 article by MV Wilkes. I think it's safe to say these references pre-date those hard drives you mention.
This would suggest that computer science did originally adopt the standard definitions of kilo etc. but then started to deviate from them in the mid-60's for the sake of ease.
It's not that common, but since I've been using Linux since I was a kid, KiB MiB and GiB are my base mental units of data. It makes no difference whether or not they're somehow "better" or "worse". It's just what I'm used to, and the base-2 convention seems to make more sense in the world of computing than base-10 numbers. Computers only work with base 2 numbers directly in any case.
Hectice, baby, Mercator says hello to you
I'd pretty much agree to the "we should use base 2, computers are base 2"
However, the article makes a bit of an overstatement. This is not a kernel dweeb vs. marketing dweeb issue. This is a software developer vs. hardware developer issue.
Sofware developer: Base 2 is easier to work with. We use base 2 (or more precisely, the base (2^10) derivative).
Hardware developer: If we use base 10 (or more precisely, the base (10^3) derivative) our drives appear larger.
The point of the system is that it is easy to calculate/work with. While base 10 is easier for humans, base 2 can have some efficiency shortcuts (add the option of using shifts instead of multiplies/divides). Since the vast majority of the time, we see the data at an twice abstracted level (simplified, abbreviated, through CLI or GUI applications), and the exceptions are almost always still slightly abstracted (through code, use of hex/octal/etc. rather than the native bits and bytes), what is easier for the humans (who rarely deal with it direct) is less important than what is more efficient for the computer.
Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
Or you're NASA?
Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
Please remind me: How many bits is there in an SI byte? Is it 10, 100 or 1000.
There is no "byte" in the SI. The question is therefore irrelevant. There's an IEC standard containing prefixes for 2^10, 2^100, 2^1000 etc, and those prefixes are kibi-, mibi-, gibi- and so on. The SI officially references them, even if they're not strictly part of it.
If your byte contains 8 bits, you are either using the binary sizes, or you are mixing things to fool the customer.
What's the relationship between the number of bits in a byte being 8 and 2 being the base for the multiples of the byte? Moreover, deciding that "a byte" is *the* unit of the smallest addressable memory cell of machines is a oversemplification, because there were in the past, and there might be in the future, machines having a word size which is not even a power of two. If anything, one might think that using powers of two to "size" memory comes from the fact that the widths of the ranges addressable by a bus made of binary wires are by nature powers of two - but that has nothing to do with the fact that the addressed items are bytes, 37-bit words or whatever.
Hard disks are memory, and counting that memory in powers of two makes no sense for them, since they store bits in very strange patterns, therefore hard disk manufacturers never adopted it. Computer networks transfer memory, and counting that memory in powers of two makes no sense, especially since they often transfer bits and not bytes, hence network designers prefer using bits and their decimal multiples rather than their binary counterparts, and they've always done so.
If you broaden your vision, you'll see that it's transistor-based memory to be "the exception". Therefore the onus should be on operators of that field to adopt the standard binary prefixes, as ugly as they may sound (and no I don't like them either), in order to avoid ambiguity with the terms used by the rest of the world.
It sounds like you are all getting old and ornery (lol). Welcome to the neckbeard world, better sharpen those razors!
I think it's safe to say that most people who have been in the scene from the beginning think the "correct" SI definition of kilo can also fuck off when it comes to computers. As can kebi, mebi and friends. It had been accepted from the beginning that "kilo" meant something just a little different when it came to describing bytes. I accepted that. Everyone accepted that. There was no problem. Even in academic circles, there were no issues.
The problem came with the storage industry and their pious "oh, but that's not what SI says the units mean". If you think that conforming to strict SI is the reason they made their change, then I'd suggest you not accept kool-aid from strangers. Ever. It was marketing greed, nothing more
However, while I think kebi, mebi and friends can fall down a deep dark hole, I actually don't mind using their unit symbols. At least in that way there is no misunderstanding in writing what is meant, and the trickle down effect from intellectual papers where it's vital that it's specified what value is means to more lay writings can occur without changing the unit symbols. But I do not now, nor will I ever, read 500MiB as "five hundred mebibytes".
A byte doesn't have to contain a multiple of 10 bits, it's just a base-unit, like a meter, a gram or a watt. The number of bits inside a byte is also something only developers care about, for a user the smallest unit he ever has to deal with is a byte.
Pretty good is actually pretty bad.
and by the same standards, 2^10 is a KiB
and yes, why is this geek news when anyone with either a passing interest, or who has ever done a wiki crawl, will know this?
Indeed and since when did it matter what Microsoft does on ./ ? Stuff on ./ seems to get less and less "nerd" (figuring out how stuff works / hack together solutions) and more and more "geek" (the "tech hipster" buying the latest stuff, preferably before it is cool).
The basic issue is Marketing Speak. Those people don't understand how to use the Geek Speak values of 1024, 1048576, and 1073741824. They are going to use 1000, 1000000, and 1000000000. Just understand that and live with it. I do. As long as the sectors come across as sizes 512 and 4096 (instead of 500 and 4000), the device can work. I remember working with mainframes and having sector sizes of 800 on some drives.
I don't use this KiB, MiB, and GiB crap in my software. The standards group that made that doesn't have oversight on software. It was intended for hardware and marketing, which hardly ever uses it. I have code for doing number conversion with metric-LIKE suffixes, but that specifically needs a single letter, so that's just gonna be the way it is. Use it where the binary-ish values apply and don't use it where you need powers of ten.
It's all about knowing which way to interpret the numbers. For disk drives I know they are talking about k=1000, M=1000000, and G=1000000000.
now we need to go OSS in diesel cars
Memory is allocated in increments of at least 4096 bytes and a maximum of 1,073,741,824 bytes. Please explain to me how a 1GB page cannot fit into 1GB of memory and why we would allow for the abomination of 244,140.625 4KB pages in 1GB of memory. How does the computer even handle fractional pages, is that even defined?
Screw the decimal system for computers. Using decimal for computer is as annoying as trying to figure out how many degrees Ferinheight one pound of water will increase if you apply one joule of energy.
I saw this one pop up in my RSS feed and thought maybe /. was broken. Then I went through the comments and realized it wasn't a repost of something old, nor was it really anything new. It was something in between.
/. devolved into what it is today, as I've been reading for years now. It's always had a bit of an anti-MS twist to it, and while I didn't always agree with the article bias, I could see how it could be used as constructive criticism for not just MS, but for other companies as well. When you're the 800-lb gorilla, people notice you. When you're the 800-lb gorilla and you tie your shoes together and fall, other people tend to not tie their shoes together.
I don't know when
This post doesn't really fall into a constructive criticism category, though. It's pure, unadulterated, trolling. I mean the source is a joke. It has to be. The "author" of that blog clearly understands computers. Ed's written over 30 books on software use. He's just griping about something everyone already understands. A slow news day. It happens.
By why, oh why, do the editors here feel the need to pick it up and make it front-page news along with news of Ozone holes, Corn shortages and Social Engineering your way into the Super Bowl? Those are nerdy news stories. This... is not. If you wanted to fill up the front page with stories like this, you should be including the following gems:
- Windows 8 installation DVDs; easily scratched by nails?
- Magnets prove harmful to MS Office installations
- Microsoft Surface Pro sells better than expected; maybe it isn't so bad? (just kidding)
I don't expect this post to actually get anything done, but I'm making it just the same. Something has to change around here. While I know I'm just a drop in the bucket (just like I am with AT&T, Verizon, Comcast and T-Mobile...who I loathe), I'm out. My Excellent Karma, ad-viewing eyes, and borderline nostalgic insightfulness are out. I don't intend on letting the door hit me on the way out, either.
So this site is now called ./? What happed to /.?
Bullshit, stop clinging to a delusion spawned from a known bug.
"they" defined "kilo", "mega" and "giga" to mean 10^3, 10^6 and 10^9 long before binary computers even existed. The only reason 2^10, 20 and 30 have ever been used is because a coder working on an ancient system decided that 1 clock cycle for a right shift 10 was better than a few hundred odd clock cycles for a divide by 1000 in software, especially when trying to display the sizes of a good number of files on a system clocked at only a few kilohertz (that's 1000 Hz, not 1024 Hz). They were right at the time to introduce a known bug in order to make the system usable. It's totally wrong now to just compute these values incorrectly, when division can be done in hardware, and we have multi GHz (that's 1,000,000,000Hz) machines.
The typical arguments for using binary units is simply "computers are binary, we should use binary units", which is bullshit for two reasons:
1) Not all computers are or have ever been, or necessarily will be binary.
2) The job of the operating system is to abstract the behaviour of the machine into behaviours users expect. Humans are good (mostly through practice, but still) at thinking in base 10, this makes it the job of the OS to work in the human's base 10 terms.
Easy, because it's bashing Windows and this is Slashdot.
+1 IDisagreeSoHeMustBeATrollOrAnAstroturferOrAShill
You are obviously not a computer engineer. You try to do memory allocations in increments of base 10. Anyone who understands computers know that it isn't just "annoying", it is something that doesn't work correctly. Forcing base 10 onto a computer that works in base 2 is a logical fallacy.
/derp
I know, lets use the floating point unit to address memory!
Maybe GP is running on a big-endian machine?
I am officially gone from
The problem arises when the two are used interchangeably. I don't care if a HDD's packaging expresses the capacity in powers of 10, as long as it's clear there's a difference between KiB and KB.
A much bigger problem is manufacturers having their devices marketed with 64GB of storage when only half of that amount is available for the user due to the other half being taken up by the OS and pre-installed apps.
k, M, G, etc. are defined SI shorthands for 10, 10^6, 10^9. They have been defined that way long (as in computer age) before computers had (that many) bits. However, when the information age broke out, computer technicians also required the shorten numbers. They decided to synchronize their system with 2^10, 2^20 etc. because it is close to the SI figures (at least for kilo and mega). That was good enough. And it was so much easier to shift values by 10 bits. However, it was in violation of the real SI meaning. To solve that issue, a new terminology was proposed where k, M,G,T meant 10, 10^6, 10^9, 10^12 and ki, Mi, Gi, Pi are 2^10, 2^20, 2^30, 2^40. The idea was to fix software in short time, people should use these *i prefixes until they are able to count and divide their number according th SI units.
Whoever uses G but means Gi should fix their software.
Welcome to the world of HDDs, where pretty much EVERY HDD out there is marketed as having rounded storage space (e.g. 1 TB) when that actually is 931.3xx GiB.
This was news 10 years ago, when people started to see difference (why is my 40 GB HDD smaller than advertised?)
...gis sdrawkcab (usually not responding to ACs; don't bother posting as AC)
What does the units you use in memory allocation have to do with how you define kilobyte? The computer doesn't care if you call 1024 bytes a kilobyte or a foomboozlebyte so what possible difference can it make? Nor does the computer care if what you call a kilobyte is 1000 bytes or 1024 bytes or 27 bytes.
Do you do malloc(1000) to get 1024 bytes allocated on your weird computer or something??? f not then how does 1 kilobyte == 1000 bytes stop you from allocating memory by powers of 2, surely your logic has to be doing that calculation already and really doesn't care what you call 2^10 bytes.
and by the same standards, 2^10 is a KiB
No one ever uses that terminology in the real world (well, maybe a handful of standards-crazy Linux developers, but that's about it). There was an attempt to shove it down everyone's throat on Wikipedia a couple years ago and it was decisively beaten back. No one wanted this baby-talk in their articles. The Commodore 64 didn't have 64 "kibibytes" of RAM (I feel silly even typing that), it had 64 KILOBYTES of RAM. That's how prefixes have always been used in the IT world and always will be. The International System of Units can go to hell.
When you read GiB in your head, do you say "gigabyte" or "gibibyte?"
"If a nation expects to be ignorant and free in a state of civilization, it expects what never was and never will be."
Right, which is why disk sectors are 500 or more recently 4000 bytes...
That's how prefixes have always been used in the IT world and always will be. The International System of Units can go to hell.
Absolutely wrong. The use of kB to mean 1,024 bytes started around 1960, and only for memory. Bandwidth has always been, and is still, measured in powers of 10, not 2. Disk space was measured in powers of 10 until Microsoft came along and muddled the issue. Disk manufacturers still use powers of 10, like they always have. Software is a mixed bag, with some developers using powers of 10 and others using powers of 2.
Since someone mentioned Wikipedia: http://en.wikipedia.org/wiki/Timeline_of_binary_prefixes
In any case, a disk labeled 2 TB will never have exactly 2 TB or 2 TiB of storage space. The number on the label is just an approximation; the exact number is “as much as we can cram in and still have a reasonable amount left over for reallocation”.
I think about "binary gigabytes". I certainly dislike the sound of Gibibytes.
Before switching to the new 'gibibyte' units, Linux has for a long time interpreted 'MB' and 'GB' the usual way, so the interpretation depended on the specifc command: 1 MB in commands like 'free' and 'df' would be 2^20, and in commands like 'fdisk' it meant 10^3. Just remember that a 1 TB disk is 10^12 bytes and a 2 TB tape stores 10^12 bytes (uncompressed). Another important unit to remember is the KUSEC, which equals 1024 * 0.000001 seconds (used in WiFi standards).
The problem came from an area that they often do: Programmer laziness. Programmers of early computers called the 1024 byte blocks computers used "kilo" since it was "pretty close" to 1000. Since space and power were limited, it was considered unnecessary overhead to actually convert it to base 10 for display.
Then as things went on it stuck, and the error kept getting bigger with increasing size.
Frankly I think OSes need to get with it and just start using base 10 prefixes for drive space. I mean we already do for network speed, CPU speed, pixels on the screen, etc, etc. Just start displaying drives using base 10 units. Memory I suppose we can keep base 2, since it is aligned on those boundaries, but then let's use the base-2 prefix. We easily have the power to do the conversion these days, let's do it.
The SI prefixes are clear and simple and used consistently everywhere, even in most computer things, except here. Let's fix this issue and call it good.
None of what you are talking about has anything to do with what I said. I am talking about the measurement of things, not the things themselves.
Memory components are power-of-two boundaries in size. This is necessary because if they were other than a power-of-two in size, math would have to be performed on each memory access. For instance, if you had memory chips that were 1000 bytes in size, and you wanted to access byte 1024, you would have to perform a calculation to find that the byte is at location 24 in the second chip. With binary sizes however, all you need to do is use the address lines to directly access the correct location in the correct chip. Also note that the word-size of the data does not matter: you could return 1 bit, 8 bits, 10 bits, anything at all. What matters is that the number of 'things' (whatever size of the 'thing' itself is) is always a power of two.
Network speeds are not dependant in the slightest on a power-of-two, regardless of the data being transported. There is absolutely no reason to say that a network that can transfer 1024 bits per second is in any way better or more natural than one that can transfer 1000 bps or one that can transfer 1100 bps. There is no reason to assume that a 'kilobit per second' is anything other than 1000 bps. And if you change the measurement to count bytes instead of bits, a network can transfer 137.5 Bps as easily as it can transfer 1100 bps, or 1.1Kbps.
Hard disk sizes are like network speeds: there is no inherent power-of-two to their size. There is no reason why a disk could not be made to hold exactly 1000000 bytes (excluding the fact that you would have a partial sector). Therefore, trying to force some power-of-two based prefix on those sizes is just silly.
Jiggabyte is much better.
Nobody wants to sound like Mushmouth from Fat Albert.
"None of what you are talking about has anything to do with what I said. I am talking about the measurement of things, not the things themselves."
Everything I am saying has to do with what you said. Specifically as to why you are wrong that Storage and Network should be rated in something other than power of 2 units. I can only assume you've never worked with assembly/machine code especially for smaller chips.
"With binary sizes however, all you need to do is use the address lines to directly access the correct location in the correct chip."
Not true. Directly addressing individual bits requires a huge address space. You only get 2^a where a is address bits locations. That's why we don't directly address individual bits. With a 16bit address you can directly address 65536 storage locations so if you work at the byte level you can directly address 64KB but you wouldn't because that isn't enough. You would directly address 65536 locations and then use a second 16 bit address as an offset to individual 64KB locations for a total of 4GB (that's real GB). Why 16bit vs 12bit or 15bit? Because that is the size of a register on your CPU and you don't want to have to double the number of instructions needed for each data access. With a true 32bit CPU you could directly address 4GB (power of 2 bytes). That's the other reason we don't directly address individual bits. It would be silly to address individual bits when the CPU loads and saves data in 8bit, 16bit, 32bit, or even 64bit chunks.
"Network speeds are not dependant in the slightest on a power-of-two, regardless of the data being transported."
1024bps, 1000bps, and 1100bps are all bits per second. In other words they all based on power-of-two. Nothing used in any digital system isn't bound by powers of two because they are all talking binary.
"Hard disk sizes are like network speeds: there is no inherent power-of-two to their size. There is no reason why a disk could not be made to hold exactly 1000000 bytes"
Again, a byte is a power of 2 unit. A bit is a power of two unit.
But that is all beside the point. Networks are for transferring data. Hard drives are for storing data. And data is generated by software running on computers working that work with data in chunks dictated by the size of an integer on their system. That size is going to be a power of two unit divisible by a byte.
Network links are for transferring DATA. And hard drives are for storing DATA. Data is generated in power of two byte chunks by CPU's acting on memory and tracking memory in power of two units. It doesn't matter if my data is the number 1 and requires only 1 bit. I have to store it in an integer unit of ram. When I write it out I'm writing integer bits not the minimum number of bits needed for my data. That is why my files are sized in MB where that is 2^20 bits. As a consumer I expect to be able to store 1024 1MB data files on a 1GB drive but what I really get is 953 and that isn't counting filesystem overhead. By the time I format that drive it will have a capacity that is 10% less than advertised. How about a 1TB drive how many GB of data is that? 931GB of data files on that drive.
A 64KB packet of data is 524288 bits. Why am I using that odd size? Because it is the number of bytes I can address with a 16 bit integer. It might seem odd to you and I but it is a nice even increment for a computer. So now I need to know how many of those my 1mbit network link can handle at once. First I have to convert to bits so 524288 then divide it up... only 1.907! If I had 8 such links I could transfer 8 at a time. A byte is 8 bits so a 1MByte link should be about the same right? Let's see a 1MB link is 1024KByte which is 16 simultaneous packets! Odd how it works out evenly!