3

When considering the disk space of a storage medium, normally the computer or operating system will represent it in terms of powers of 1024 - a kilobyte is 1,024 bytes, a megabyte is 1,048,576 bytes, a gigabyte is 1,073,741,824 bytes, and so on.

But I don't see any practical reason why this convention was adopted. Usually when disk size is represented in kilo-, mega-, or giga-bytes, it has to be converted into decimal first. In places where a power-of-two byte count actually matters (like the block size on a file system), the size is given in bytes anyway (e.g. 4096 bytes).

Was it just a little aesthetic novelty that computer makers decided to adopt, but storage medium vendors decided to disregard? Whenever you buy a hard drive, there's always a disclaimer nowadays that says "One gigabyte means one billion bytes". It would feel like using the binary definition of "gigabyte" would artificially inflate the byte count of a device, making drive-makers have to pack 1.1 terabytes into a drive in order to have it show up as "1 TB", or to simply pack 1 terabyte in and have it show up as "931 GB" (and most of them do the latter).

Some people have decided to use units like "KiB" or "MiB" in favour of "KB" and "MB" in order to distinguish the two. But is there any merit to the binary prefixes in the first place?

There's probably a bit of old history I'm not aware of on this topic, and if there is, I'm looking for somebody to explain it.

(Apologies if this is in the wrong place. I felt that a question on best practice might belong here, but I have faith that it will be migrated to the right place if it's incorrect.)

4
  • There does not have to be an advantage. Some computer engineers and programmers have this sort of professional habit of picking power of 2 numbers even when there is no reason for that. – hamstergene Nov 12 '13 at 8:45
  • In some low level corners binary units are useful (for example disk sector size, RAM pages etc.). But for high level values directed at end users, like disk or file sizes, there is little reason to use binary prefixes. – CodesInChaos Nov 12 '13 at 10:17
  • It's about marketing. It's easier to sell "1 TB" instead of "931 GB". I have a hazy memory of an attempt to sell by base-2 sizes years ago, but it never caught on. – Juha Untinen Nov 12 '13 at 13:22
  • 1
    See Advertised disk space vs actual disk space on SO. – CodeCaster Nov 12 '13 at 13:42
3

The reason is because in any organized file system that is placed on the drive must be able to uniquely identify each spot on the drive. and those addresses are stored in binary format,because,well, we are using binary computers, not say, analog computers. So to most compactly represent all the addresse on a disk requires a certain minimum number of bits. and file directories are basically wasted, overhead space so why not make them as small as possible. Thus you actually see manufacturers targeting their physical drive platters toward certain powers of twos, because more space than that would be wasted,unless they changed the directory address length of addresses.

It is kind of convenience and optimization for getting the most usable, addressable space between the two considerations of addressing and physical platter size.

remember there is a table taking up nearly 2% of the disk,and all that table does is show where on the disk each file starts, and what the name of the file is, etc. so this table can be made smaller by being smart about the numer of bits used for each files address.

if you make the table address two bits longer, and you only make the drive platter twice as large, you're kind of wasting most of that second bit you added,so why not target the physical platter manufacturing to match what bits you have to create addresses.

and the of course, humans wanted some way to understand the magnitude of these numbers in our digital ( Powers of Ten fingers ) world. thus, the closest one is , 1000.

at this point the whole thing is pretty moot because drive capacities are so huge we dont worry quite as much about the overhead of addressing, but at one point it was important.

2

There is no advantage or disadvantage of using 1024 instead of 1000 for disk size units. It is just that 8 bit makes 1 byte and the same fashion continues for all other units of computer space.

As you correctly say, KiB and KB should be used appropriately to distinguish them properly.

2
  • I don't really understand what the KiB prefix is supposed to say? K is for Kilo as opposed to Ki which is for? – Rotem Nov 12 '13 at 11:24
  • 5
    @Rotem: "Kibi". There's a whole set of standardised binary prefixes – Phoshi Nov 12 '13 at 11:33
1

According to Wikipedia:

By the mid-1960s, binary addressing had become the standard architecture in most computer designs, and main memory sizes were most commonly powers of two. This is the most natural configuration for memory, as all combinations of their address lines map to a valid address, allowing easy aggregation into a larger block of memory with contiguous addresses.

Early computer system documentation would specify the memory size with an exact number such as 4096, 8192, or 16384 words of storage. These are all powers of two, and furthermore are small multiples of 210, or 1024. As storage capacities increased, several different methods were developed to abbreviate these quantities.

...

The disk drive industry followed a different pattern. Industry practice, more thoroughly documented at Timeline of binary prefixes and continuing today, is to specify hard drives using SI prefixes and symbols in their SI or "decimal" interpretation. Unlike binary-addressed computer main memory, there is nothing in a disk drive that influences it to have a total capacity easily expressed using a power of 1024.

If you follow up with the linked timeline, you'll see that before RAM came to be measured in powers-of-two, engineers used the SI prefixes in their standard (power-of-ten) usage. This is the usage which hard drive manufacturers continued. RAM measurements changed for convenience, although they were apparently standardized that way by Apple on the first Macs.

So there's good reason for RAM to be measured in powers-of-two, but they're misusing SI prefixes to do so. Hard drives use the prefixes correctly, even though this creates some confusion.

-1

The basic unit in disk is not the byte, it is a sector and last time I checked, the sector sizes were a power of two in term of bytes. If at the lower level it make sense to use a power of two, it makes sense to continue using power of two related prefixes. (In my experience, it isn't what happens, disk vendors are using strange mixed units making less sense than power of two or power of ten one).

-6

10000000000b = 2^10 = 1024

My guess is that they wanted something aligned to a power of 2 and the closest they could get to something beginning with a 1 and ending with a zero (without exceeding technological limits at the time) is 1024. I am probably wrong, as i didn't research this, but it's just my guess.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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