Quickly convert between storage size units: KB, MB, GB, TB & 512 byte blocks

Matthew DeCarlo

Posts: 5,271   +104
Staff

A very common task in the IT industry is needing to convert between storage size units – bytes, kilobytes, megabytes, gigabytes, terabytes, etc. To make things even more complicated, the POSIX standard also specifies that the default output for commands like “df” and “du” must be in 512 byte block sizes.

This post will cover a very simple and easy way to quickly convert between any of these units.

A kilobyte/megabyte/gigabyte versus a kibibyte/mebibyte/gibibyte

Historically there has been a discrepancy and dispute on how much space a kilobyte, megabyte, and gigabyte represented. If you ask a hard drive manufacturer, they would say a gigabyte is 1,000,000,000 bytes. However, most operating systems calculate a gigabyte as 1,073,741,824 (which is 1024*1024*1024). This is about a 7% discrepancy, and as sizes increase the discrepancy gets larger (for example a terabyte has about a 9% discrepancy).

Editor’s Note:
Guest author Brian Smith is an AIX/Linux systems administrator in Colorado. You can follow Brian on Twitter at @brian_smi and see his blog at https://www.ixbrian.com/blog

The solution to all this was that the official definition of a “Gigabyte” is now 1,000,000,000 bytes, and a “Gibibyte” is 1,073,741,824. See this wikipedia entry for more information.

I don’t know about you, but I have never actually heard another person say the word “Gibibyte”. Throughout the rest of this post I will refer to a gigabyte as 1,073,741,824 bytes as this is the common use among people even if it is incorrect per the textbook definition.

The wrong way to convert between size units

Many people will look at a file size such as 54,183,672,092 bytes and say it is “54 Gigabytes” based on the first 2 digits of the number. In fact, it is really 50.5 Gigabytes (54,183,672,092 divided by 1,073,741,824 (size of 1 GB) equals ~ 50.5 GB).

The larger the file size, the bigger the discrepancy will be between the size it appears to be at first glance and the actual size.

The quick and easy method to convert between size units

There is a fast and easy way to do any of these conversions. With this method the only number you need to memorize is 1024. The only other thing you need to know is the name and order of the sizes (kilobyte, megabyte, gigabyte, terabyte). To convert smaller units to larger units (convert bytes to kilobytes or megabytes) you simply divide the original number by 1,024 for each unit size along the way to the final desired unit.

For example, if you want to convert 110,214,321,212 bytes to megabytes, you would divide by 1,024 (to first convert to KB), and then divide by 1,024 again (to end up in MB). If you wanted to convert to gigabytes, you would divide by 1,024 three times (once to get to KB, once to get to MB, and then once to end up in GB).

To convert larger units to smaller units (I.e. take a number of gigabytes and convert it down in to megabytes, kilobytes, or bytes) you simply multiply the original number by 1,024 for each unit size along the way to the final desired unit. For example, if you want to convert 384 megabytes to bytes, you would simply multiply it by 1,024 two times (first time to convert to KB, and the second time to end up in bytes).

If you wanted to convert 14 terabytes to the number of bytes, you would multiply 14 by 1,024 four times (first to convert to GB, then to MB, then to KB, and finally to bytes). Here is a diagram that summarizes this:

Here are some examples:

  • Convert 67,003,324,746 bytes to Gigabytes:
    • 67,003,324,746 / 1024 / 1024 / 1024 = 62.40 GB (Divide by 1024 three times because we are moving across 3 units, smaller to larger unit)
  • Convert 67,003,324,746 bytes to Megabytes:
    • 67,003,324,746 / 1024 / 1024 = 63,899 MB (Divide by 1024 two times because we are moving across 2 units, smaller to larger unit)
  • Convert 8,846,679 Megabytes to Terabytes:
    • 8,846,679 / 1024 / 1024 = 8.44 TB (Divide by 1024 two times because we are moving across 2 units, smaller to larger unit)
  • Convert 78 Gigabytes to Bytes:
    • 78 * 1024 * 1024 * 1024 = 83,751,862,272 (Multiple by 1024 three times because we are moving across 3 units, larger to smaller unit)
  • Convert 52 Terabytes to Gigabytes:
    • 52 * 1024 = 53,248 Gigabytes (Multiply by 1024 one time because we are moving across 1 unit, larger to smaller)

The final piece of the puzzle: 512 byte blocks

The POSIX standards require that the default output of commands like “df” and “du” be in 512 byte block units, so this is a unit you will run in to from time to time. A 512 byte block is exactly what it sounds like: 512 bytes of data.

There are a couple of methods to convert 512 byte blocks in to something more meaningful:

  • You can convert 512 byte blocks to kilobytes by dividing them by 2. For example, six 512-byte-blocks divided by two equals 3 KB.
  • You can convert 512 byte blocks to bytes by multiplying them by 512. For example, six 512-byte-blocks multiplied by 512 equals 3,072 bytes.

Once you have converted the 512-byte-blocks in to either kilobytes or bytes, you can then easily convert them to whatever other unit you need.

Converting between size units is much easier than most people think. All you need to do is memorize the number 1,024 and a couple of other rules and you will be on your way to being able to quickly and easily convert between any size units.

Permalink to story.

 
Not trying to be arrogant here, but there are techies that don't know this stuff? I memorized up to 2^20 by 10 and knew the difference between a bit and a byte because I hated how ISP's used bits to measure speed to make it look faster while bytes were more relevant. This stuff should be second nature to anyone who passed 5th grade algebra
 
Last edited:
Long story short, the industry figured out a way to shaft the consumer and it's called the Gibibyte... Really anyone who has any kind of experience working with computers, cell phones, mp3 players, ect. will have first hand experience, if then you don't have interest in why your claimed 1TB HDD shows up formatted as 931GB then this article is meaningless to you. If you have ever been interested in why this is, this article will still be meaningless to you because you've already figure out why this is happening. Industry got lazy years ago and have never changed their ways, it's only going to get worse as time goes on and storage devices get larger and larger.
 
Just use a real operating system that defines the Kilobyte as 960 bytes and enjoy the increase in disk space. Now your new 1,000,000,000,000 byte SSD is a 1.177 TB SSD. Instant increase in TBs.

It's all arbitrary and nobody except people consumed by minutiae care.
 
Just use a real operating system that defines the Kilobyte as 960 bytes
Which imaginary number system is that OS using?

If you divided 1000 Bytes by 1.024 for the binary equivalent, you get 976.5625 not 960.

If you were actually making a joke. Please don't! It is confusing enough without throwing in extra numbers.
 
Funny. I actually already did exactly this a couple of times before to see how many GB do I actually get from storage.

People usually think that space they are "missing" is reserved for important things.
 
Back