1 kilobyte is precisely 1000 bytes

3 min read Original article ↗

Published on
Updated on

When it comes to computer memory, we usually learn that a kilobyte is 1024 bytes, a megabyte is 1024 kilobytes, and so on. But what if I told you that it's not necessarily true and 1 kilobyte can be 1000 bytes? And what's more, this makes even more sense.

Why do we often say 1 kilobyte = 1024 bytes?

Since computers work in a binary system (base 2), the memory is also addressed in binary. This means it's quite impractical to use memory addresses or produce RAM sticks with memory amounts that are not multiples of powers of 2. From the powers of 2 we chose 1024 (210) as the base order of magnitude, since it's very close to 1000 (2.4% difference) and it's not insanely large. So, in practice we often consider kilo as 1024 (210), mega as 1048576 (220), giga as 1073741824 (230), etc.

Why does 1000 still make more sense?

While binary kilo, mega and giga units are close to their decimal counterparts, some might already notice that the larger are the units, the more is the proportional inaccuracy. In order to illustrate, let's increase the units:

Unit Decimal value Binary value Relative difference
Kilo 1000 1024 2.4%
Mega 1000000 1048576 ≈ 4.8%
Giga 1000000000 1073741824 ≈ 7.3%
Tera 1000000000000 1099511627776 ≈ 10%
Peta 1015 ~ 1.126 * 1015 ≈ 12.6%
Exa 1018 ~ 1.153 * 1018 ≈ 15.3%
Zetta 1021 ~ 1.181 * 1021 ≈ 18.1%
Yotta 1024 ~ 1.209 * 1024 ≈ 20.9%
Ronna 1027 ~ 1.238 * 1027 ≈ 23.8%
Quetta 1030 ~ 1.268 * 1030 ≈ 26.8%

For 1 quettabyte the inaccuracy is already larger than a quarter. Even for 1 terabyte the difference is noticeable, around 10%. This problem often happens when hardware manufacturers (such as HDD or SSD) advertise the memory capacity in decimal units while the operating system might show in binary units.

Missing 70 gigabytes
Missing 70 gigabytes

For smaller amounts of memory the binary representation is pretty close to the decimal one, but diverges for huge amounts of memory.

What are the standard units?

This "kilobyte = 1024 bytes" rule is actually an old (often confusing) convention. In the tech industry there is still huge inertia, this old convention is still used by RAM manufacturers (JEDEC), tons of software and some operating systems (such as Windows). Interestingly, storage vendors often prefer the decimal convention, which creates even more confusion (mentioned above).

In order to solve this confusion, International Electrotechnical Commission introduced binary prefixes for binary units:

Binary units (International Electrotechnical Commission) Decimal units (International System of Units)
Unit Value Unit Value
KiB (kibibyte) 10241 kB (kilobyte) 10001
MiB (mebibyte) 10242 MB (megabyte) 10002
GiB (gibibyte) 10243 GB (gigabyte) 10003
TiB (tebibyte) 10244 TB (terabyte) 10004
PiB (pebibyte) 10245 PB (petabyte) 10005
EiB (exbibyte) 10246 EB (exabyte) 10006
ZiB (zebibyte) 10247 ZB (zettabyte) 10007
YiB (yobibyte) 10248 YB (yottabyte) 10008
RiB (robibyte) 10249 RB (ronnabyte) 10009
QiB (quebibyte) 102410 QB (quettabyte) 100010

The guidance is: SI prefixes are powers of 10 only, and if you mean powers of 2 you should use IEC binary prefixes (Ki, Mi, Gi, …).

Conclusion

There is still a lot of inertia to equate 1 kilobyte to 1024 bytes. While this is usually acceptable depending on the context, it can sometimes cause confusion, especially for non-technical people.