I have a 40GB hard drive, but Windows only says it's 37.7! What gives?!
Welcome to the wonderful world of electronic marketing. The problem here is that computer operating systems and hard drive manufacturers can't agree as to what the exact definition of a gigabyte (GB) is. Computers think that a gigabyte is about 1,073,000,000 bytes (one billion, 73 million and some-odd bytes), while hard drive manufacturers claim a GB is really the smaller value of 1,000,000,000 (1 billion) bytes, mainly because it makes their numbers sound larger. Saying that they were lying to you is a little harsh, so we're just going to say that they're word weasels and leave it at that.
How it works
Computers are based on binary logic, and so view denomiations in powers of two, e.g. 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, etc. Since 2^10 (two to the tenth power, or 1024) happens to be fairly close to 1000, engineers decided to use 10-based metric nomenclature such as "kilo" (one thousand), "mega" (one million, or 1000*1000), and "giga" (on billion, or 1000*1000*1000). Thus, a kilobyte (KB) holds 2^10, or 1024 bytes, a megabyte (MB) holds 1024 kilobytes, and a gigabyte (GB) holds 1024 megabytes. In other words, a gigabyte is 1024^3 (1024*1024*1024) bytes, which equates to
1,073,741,824 bytes.
However, while 1024 is
close to 1000, it isn't exactly so, and when we start talking about billions of bytes, the difference can become fairly large.
Technically, a kilobyte should be 1000 bytes, meaning that a gigabyte should only be 1000*1000*1000 bytes, a.k.a. 1 billion, or
1,000,000,000 bytes (as opposed to a computer's 1,073,741,824).
Notice how the second number is smaller. Hard drive manufacturers argue that since this is the "official" metric definition, it's the one they should be allowed to use. Thus, a 40GB drive according to them is only 40*1,000,000,000, or 40 billion bytes. However, after you install your hard drive, your computer comes along, sees 40 billion bytes, and performs the following operation to figure out how many gigabytes (GB) you have:
1 gigabyte (GB)
40,000,000,000 bytes x --------------------- = 37.2529 GB
1,073,741,824 bytes
So, in the end, it's really just a marketing tool. 40GB sounds a whole lot larger and neater than 37.lotsadecimals. Also, this is not the only area where hardware people have nit-picked designations in order to basically fool the consumer. More information on bytes, bits, and all their manifestations can be found
here.