There are some numbers and units. Numbers are numbers. Units are units. Numbers informs how many. Units inform about two things:
- how many
- of what
Unfortunately it seems like most programmers just don’t care about all that stuff.
The SI Base Units
There is the International System of units, which is normally used e.g. in physics.
|mole||mol||amount of substance|
IT Base Units
In IT we have a couple more units.
|bit||b||number of bits|
|byte||B||number of bytes|
|bits per second||bps||number of bits per second|
Have you noticed the difference? BYTES and BITS? This is surprising for many programmers, but these are two different things. What’s more, as two different things, they have two different symbols.
The Word Of Truth
A couple of basic definitions, also it’s too surprising for many people.
- 1 byte = 8 bits
- 1 B = 8 b
- bit represents logical value (True or False), (0 or 1)
- there is nothing smaller than 1b
- you cannot have half of a bit - what is the half of False?
There are also prefixes used for multiples and submultiples of the basic units.
These symbols are used for avoiding too many zeros. So instead of
1000m you can write
1km and instead of
1000000B you can write
There is another problem. Normally
1 kilobyte = 1024 bytes. Yea, the IT world is a little bit different. For distinguishing between
10³ = 1000 and
2¹⁰ = 1024 there are also some other symbols:
|kibi||Ki||1024¹ = 2¹⁰|
|mebi||Mi||1024² = 2²⁰|
|gibi||Gi||1024³ = 2³⁰|
|tebi||Ti||1024⁴ = 2⁴⁰|
|pebi||Pi||1024⁵ = 2⁵⁰|
|exbi||Ei||1024⁶ = 2⁶⁰|
The only difference between Now we’ve got 1024B = 1KiB and so on.
Why am I writing all that? Because I don’t understand why many people in the IT world, including many programmers, still don’t know that this is important to write according to some standards. This is like a language: you have to use the correct grammar so others have the chance to understand correctly what you say.
Just imagine that you have a new ISP and you pay some money for an internet connection with the speed of 1MB per second. Then you get something which is 8 times slower. All that just because they treated
B as a symbol for
bit . I’m sure you will get angry. Why nobody seems to be angry at “programmers” who mix bytes with bits all the time. Even Elasticsearch gives the size of an index in
mb. Unfortunately this even doesn’t exists. How much is a
Some Examples From Web
1KB– this means
1 Kelvin Byte– I have no idea what it means. Author could think about:
1kB = 1000Bor
1KiB = 1024B.
1 milibit, this is
0.001 of bit. Bit is a logical value, basically it means
1. How can you have
0.001 of True or False? Maybe someone wants to write
1MB = 1,000,000B?
1mB– another funny, not found so often. This means
1 milibyte = 0.001B. But
1gb– sorry, I have no idea what the
1gB– the same as above.
1kb– often author wants to write
1kb = 125B– quite unusual number of bytes.
Why Nobody Cares?
Why nobody seems to care about being exact? The whole programming is about being exact. Writing good programs working in a reliable way. Why cannot we say the same about being exact about even so simple thing as units?