← Quora archive  ·  2012 May 29, 2012 09:02 AM PDT

Question

Why are data transfer speeds usually measured in megabits per second?

Answer

Bytes are two levels of abstraction above the physical medium. The level of abstraction you need depends on the typical problems you solve. Communications engineering involves problems bandwidth users typically don't face. Just like your car mechanic uses more precise words than you routinely, like "intake valve."

The 'bit' is slightly more 'physical' because that's where compression algorithms, errors and noise enter the picture (the most frequent kind of noise is the kind that flips one bit). It is also the level where simple collateral information, that may not take a multiple of 8, is transmitted. You only need one bit for a simple parity check for example. Why add 100% overhead when 12.5% will do?

Below the bit level is the baud level, which deals with wave forms in te physical medium. They are not the same as neat, logical square wave bits:

http://en.wikipedia.org/wiki/Baud

So what you use depends on the level of abstraction necessary for your problem. If you're designing a modem and have to deal with the underlying physics, baud thinking is appropriate. If you are dealing with actual channel capacity, noise etc., bits are best. If you are dealing with applications, bytes are fine.

Bytes themselves are a rather arbitrary artifact of things like Latin alphabet size. The English alphabet has 26 letters in lowercase and caps, plus numerals and punctuation, that puts the basic character set that needs numbering at around 70 odd. It would be nice to fit this within the basic storage unit. You could prune a few to get to 64, add nice-to-have characters and get to 128, or even more headroom to get to 256, which allows a lot of simple integer math to fit in one byte operations. The last is 2^8, so the number of bits is also a power of 2 (8=2^3) which has some computational advantages.

But this choice of an 8-bit byte was not not necessary. If the Chinese had invented computers, maybe they'd have defined a 16-bit byte to accommodate a few thousand symbols.

We are facing another interesting units issue in Big Data today, where really large amounts are expressed in power-of-10 bytes rather than power-of-two. This has started causing a perception that storage vendors are short changing customers by a few percentage points.

So the broad answer to your question is that practical problems drive primitive modeling choices, which turn into languages as they are used extensively for modeling many similar problems. Adjacent modeling languages need cross-translation because they evolve from different initial modeling concerns (which may or may not remain relevant as the language ages -- a 16-bit byte would probably make a lot more sense today for instance to model human symbol level computing).