Kilo vs Kibi, Mega vs Mibi

By Xah Lee. Date: . Last updated: .

In computing, there's a abomination. kilo doesn't mean one thousand, it means 1024, and mega isn't a million, but 1048576. What the fsck?

Here's binary prefix.

Binary Prefix
namebase 2 expbase 1024 expdigits
kibi2^101024^11024
mibi2^201024^21048576
gibi2^301024^31073741824

Here's metric prefix.

Metric Prefix
namebase 10 expbase 1000 expdigits
kilo10^31000^11000
mega10^61000^21000000
giga10^91000^31000000000

Let the terms: kilo, mega, giga, be what they always meant universally, that is, powers of 10.

One source of consumer confusion is the difference in the way many operating systems display hard drive sizes, compared to the way hard drive manufacturers describe them. As noted previously, hard drives are described and sold using “GB” or “TB” in their SI meaning: one billion and one trillion bytes. Many current operating systems and other software however display hard drive and file sizes using “MB”, “GB” or other SI-looking prefixes in their “binary” meaning, just as they do for displays of RAM capacity. (This is fairly recent. The presentation of hard disk drive capacity by an operating system using “MB” in a binary sense appears no earlier than Macintosh Finder after 1984. Prior to that, on the systems that had a hard disk drive, capacity was presented in decimal digits with no prefix of any sort (e.g., MS/PC DOS CHKDSK command).)

from Binary prefix and Timeline of binary prefixes.

Who Has Adopted Metric?

I am surprised to learn that the change actually has been adopted by a few. Quote:

2009. Apple Inc. uses the SI decimal definitions for capacity (e.g., 1 kilobyte = 1000 bytes) in the Mac OS X v10.6 operating system to conform with standards body recommendations and avoid conflict with hard drive manufacturers' specifications.[84][85]

2010. The Ubuntu operating system uses the IEC prefixes for base-2 numbers as of the 10.10 release.[86]

Way to go, Apple and Ubuntu.

When fixing this problem, there are 2 ways.

What Notation to Use When Binary is Necessary?

I would go a step further and actually ban any binary prefix. When it is necessary to use binary based numbers, i think a elegant solution is to simply use exponent notation, for example, 2^8, 2^20, 2^30.

So, 3 kibi bits would be written as 3*2^10.