In these days of Terabyte disc drives it hardly seems worth arguing over the difference between 1024 and 1000 bytes - but it does make a difference.

This week's xkcd cartoon makes fun viewing, but it makes sense only if you understand how we count in binary - or don't.

There are lots of reasons why a kilobyte of anything is 1024 and not 1000. The best reason is that if you are working with memory the amount of memory that you can address doubles each time you add an address line or address bit. So with one address bit you can select one of two locations. With two address bits you can select one of four and so on:

Number of bits

Max size of memory

1

2

2

4

3

8

4

16

5

32

6

64

7

128

8

256

9

512

10

1024

So now you can see where 1024 comes from. It is also 2^{10} and the closest power of 2 to 1000, which is the unit we ten-fingered machines like to work with.

In particular 1kB of memory is 1024 memory locations except during a leap year as the cartoon suggests. But joking aside, why should 1kB ever be understood as 1000 bytes?

The answer is that disk drive manufacturers suddenly started to report the size of disks using 1000byte kilobytes.

Why?

Well, see if you can guess why.

Consider a hard disk which offers 1 GByte of storage. If you stick to the binary definition of 1 kByte this should be

1024*1024*1024 of storage, or 1,073,741,824 bytes. It would be if you were buying a computer that had 1GByte of memory, but for a disk drive 1GByte=1000*1000*1000=1,000,000,000. So that means using the decimal definition leaves you short of 73,741,824 Bytes or more than 70 MBytes of storage.

If you repeat the calculation for 1 TByte of disk storage you will discover that there are over 92 GBytes missing - which is quite a lot of storage.

Now perhaps the Drivemaker's kilobyte line in the cartoon table makes more sense.

But what about the Intel kilobyte. This is a reference to the Pentium FDIV bug which affected the Intel p5 Pentium floating point unit, due to missing entries in the lookup table used by the digital divide operation algorithm and produced incorrect results.

Some other questions to that need dealing with.

Who is Kelly-Bootle?

He wrote a funny book called The Devil's DP Dictionary which contained lots of strange definitions relating to "data processing", the term given to hardware and software before it became IT. If you are interested, there are a handful of the original book, now over 30 years old, on Amazon and a newer edition, The Computer Contradictionary, is still available.

And finally, for anyone not familiar with the term "Baker's Dozen", it is the practice of baking 13 loaves when only 12, i.e. a Dozen, were called for. Hence a Baker's Byte would have 9 rather than 8 bits, perhaps counting the parity bit.

... unless they already have a copy. If you are looking for a programmer present this holiday season, there is one book, or set of books that should be top of any list.