Since there has been some controversy in the past over the accuracy of the conversion of speeds on this site, I thought I would take the initiative to end the discussion once and for all.
UNDERSTANDING BINARY
First of all, an explanation of the binary system is required. The binary numeral system, known as Base2, uses 2 symbols: 0 and 1. Binary uses a Boolean system of logic, meaning that there is only positive or negative values. 0 indicates a negative, 1 a positive.
Binary is a positional notation, which means that the value of each position is equal to the base to the exponent of the position number (eg. 2^x where x is the position number).
| Bit Position |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
| Decimal Value |
128 |
64 |
32 |
16 |
8 |
4 |
2 |
1 |
Here are some common values:
| DECIMAL |
BINARY |
| 1 |
1 |
| 2 |
10 |
| 3 |
11 |
| 4 |
100 |
| 5 |
101 |
| 6 |
110 |
| 7 |
111 |
| 8 |
1000 |
| 9 |
1001 |
| 10 |
1010 |
| 16 |
10000 |
| 32 |
100000 |
| 64 |
1000000 |
| 100 |
1100100 |
| 256 |
100000000 |
| 512 |
1000000000 |
| 1000 |
1111110100 |
| 1024 |
10000000000 |
A byte is a unit which contains 8 bits. This is known as an octet. The maximum decimal value of a byte is 255 (the bit value would be "11111111").
INTERNATIONAL SYSTEM OF UNITS (SI)
The next thing we need to understand is what is called International System of Units (SI) Notation:
| Prefix |
Symbol |
Magnitude |
Meaning (multiply by) |
| Yotta- |
Y |
10E24 |
1 000 000 000 000 000 000 000 000 |
| Zetta- |
Z |
10E21 |
1 000 000 000 000 000 000 000 |
| Exa- |
E |
10E18 |
1 000 000 000 000 000 000 |
| Petta- |
P |
10E15 |
1 000 000 000 000 000 |
| Tera- |
T |
10E12 |
1 000 000 000 000 |
| Giga- |
G |
10E9 |
1 000 000 |
| Mega- |
M |
10E6 |
1 000 000 |
| kilo- |
k |
10E3 |
1000 |
| hecto- |
h |
10E2 |
100 |
| deka- |
da |
10 |
10 |
| - |
- |
- |
- |
| deci- |
d |
10E-1 |
0.1 |
| centi- |
c |
10E-2 |
0.01 |
| milli- |
m |
10E-3 |
0.001 |
| micro- |
u (mu) |
10E-6 |
0.000 001 |
| nano- |
n |
10E-9 |
0.000 000 001 |
| pico- |
p |
10E-12 |
0.000 000 000 001 |
| femto- |
f |
10E-15 |
0.000 000 000 000 001 |
| atto- |
a |
10E-18 |
0.000 000 000 000 000 001 |
| zepto- |
z |
10E-21 |
0.000 000 000 000 000 000 001 |
| yocto- |
y |
10E-24 |
0.000 000 000 000 000 000 000 001 |
This is the standard for prefixing values. For example, rather than using a value of 5000 metres, you would use 5 kilometres. Rather than saying you have .007 litres of water, you would say that you have 7 millilitres of water.
When dealing with massive numbers of bits and bytes in computer science, it was logical that a standard of prefixing would be required in order to efficiently address values. Since the SI notation was already widely in use, it made sense to adopt the use of the same names.
However, the SI notation was designed for use with the Base10 (decimal) numeral system. As you can see above, they are based on multipliers of 10, or one place value of the decimal system. In Base2, the 10th place value is used to escalate to the next prefix:
| Position |
Value |
Prefix |
| 10 |
1024 |
kilo (k) |
| 20 |
1048576 |
Mega (M) |
| 30 |
1073741824 |
Giga (G) |
| 1,024 Byte |
1 Kilobyte (KB) |
| 1,024 Kilobyte (KB) |
1 Megabyte (MB) |
| 1,073,741,824 Bytes |
1 Gigabyte (GB) |
| 1 Gigabyte (GB) |
1,024 Megabyte (MB) |
The conversion is not exactly 1000, but 1024. This has been standardized to units that apply to filesize, such as bytes.
CONVERSION
here's the catch: the SI notation prefixes usually retain their Base10 (10^x) meanings when used to describe rates of data communication (bit-rates):
e.g. "10 Mbps Ethernet" runs at 10,000,000 (10 million) bits per second, not 10,485,760 bits per second.
From wikipedia.org (http://en.wikipedia.org/wiki/Kilobits_per_second):"A kilobit per second (Kbps or kbit/s) is a unit of data transfer rate equal to 1,000 bits per second. It is sometimes defined to mean 1,024 bits per second, by extension from the conventional definition of kilobyte, though this is rare and non-standard."
To convert from bytes to bits, you must multiply the total number of Bytes by 8. But to get kB/s values from bit rates, you must divide the total number of bits by 8, then divide by 1,024.
kilobytes per second >> kilobits per second is:
| KiloBytes * 1,024 = total Bytes | |
| total Bytes * 8 =  bits |
| bits / 1,000 = kilobits |
kilobits per second >> kilobytes per second:
| kilobits per second * 1,000 = total bits per second |
| bits / 8 = total Bytes per second |
| / 1,024 = kiloBytes per second |
The bottom line is that the conversion here on this site is correct.
SIDE NOTE
The International Electrotechnical Commission (IEC) proposed a new set of "binary prefixes" to settle the confusion between Base10 and Base2 prefixes. The solution was KiB (kibibyte) and MiB (mibibyte), where the value would be 1 KiB = 1024 bytes. This would allow Kilobyte to retain its Base10 value of 1000 bytes.
Years later, this standardization has not been publically adopted. People continue to use KB to mean 1024 bytes, even though they know that the proper SI meaning for kilo is 1000. The concern over switching to the kibi is that if anyone is reading through historical documentation, they would not know if KB was meaning 1000 or 1024. So it stands:
KB = 1024 Bytes
kbit = 1000 bits