Informatycy to dziwni ludzie. Można to zauważyć już w samych podstawach ich nauki. Dla każdego normalnego człowieka kilo oznacza 1000, a dla informatyka 1024. Kilo, jak kilo, mała różnica, ale przy mega, to już porażka (1 048 576 do 1 000 000), nie wspominając o większych jednostkach typu giga, czy też tera (1 099 511 627 776 do 1 000 000 000 000). Dlaczego tak się dzieje?
To, że informatycy są dziwni, to jedno, a to że komputery pracują na liczbach binarnych to drugie. To pierwsze powoduje bałagan, który skutecznie podsycają marketingowcy z firm produkujących np. dyski twarde. To drugie umożliwia skuteczną pracę komputerów, które wszyscy używamy, często nawet, nie zdając sobie z tego sprawy (komórka to też komputer, tyle, że mały).
A teraz już do rzeczy.
Zacznijmy od początku. Jak wspomniałem wcześniej komputery pracują na liczbach binarnych. Binarnych, to znaczy posługują się jedynie dwoma cyframi: 0 i 1. Najprościej to ujmując: prądu nie ma (0) albo prąd jest (1). W taki sposób działają wszystkie współczesne komputery (są nieliczne wyjątki, które tutaj pominę), od zwykłej komórki, poprzez domowego PC-ta, aż do superkomputerów IBM.
Tylko dwie cyfry 0 i 1. W jaki więc sposób komputer może zapamiętać liczbę np. 5?
Wymyślono sobie taki sposób, iż odbywać się to będzie na kilku takich cyfrach (zwanych przez informatyków bitami), w ten sposób, że:
0 = 0 – to na szczęście jest proste;
1 = 1 – to też jest proste;
Ale teraz, jak zapisać cyfrę 2 posługując się tylko 0 i 1?
Wymyślili to w ten sposób:
10 - to jest cyfra 2
11 - to jest cyfra 3
Ale co z czwórką?
Dodajemy kolejne 0 i 1:
100 – to jest cyfra 4
101 – to jest cyfra 5.
I doszliśmy do naszej piątki. Więc cyfra 5 w systemie binarnym to 101.
A jak wtedy zapisać liczbę 10?
Trzeba rozpisywać to dalej:
110 – to jest cyfra 6
111 – to jest cyfra 7
1000 – to jest cyfra 8
1001 – to jest cyfra 9
1010 – to jest liczba 10.
A więc liczbę 10 komputery zapisują w swojej pamięci jako ciąg: 1010. Zauważmy jednak, iż są to cztery cyfry 0 i 1. Przy pomocy tych cyfr (czterech) można zapisać znacznie więcej niż tylko 10. Policzmy ile:
1011 – to jest liczba 11
1100 – to jest liczba 12
1101 – to jest liczba 13
1110 – to jest liczba 14
1111 – to jest liczba 15
A więc przy pomocy czterech 0 i 1 możemy zapisać maksymalnie liczbę 15 (czyli 16 różnych wartości uwzględniając w tym 0: 0000 jest to 0, 1111 jest to 15).
W informatyce, każdą z tych cyfr (0 i 1) nazywamy bitem.
Bit jednak jest zbyt mały, aby zapamiętać jakieś większe informacje. Na przykład w alfabecie polskim są 32 litery, a więc cztery bity to zbyt mało nawet na to, aby rozróżnić poszczególne litery alfabetu polskiego, nie wspominając o takich dodatkach jak przecinek, kropka, nawiasy czy nawet odstęp (spacja).
Przyjęło się, iż będziemy posługiwać się ośmioma bitami (cyframi 0 i 1), dzięki czemu możemy zapamiętać jeden z aż 256 różnych znaków. W ten sposób powstała nowa jednostka zwana bajtem. Można więc powiedzieć, iż bajt to układ ośmiu bitów.
A co z tym kilobajtem? Wygląda na to, że odszedłem od tematu. Nie, nie, to tylko pozory.
Ale uwaga, będzie nieco trudniej.
Tak się składa, iż przy pomocy jednego bajtu jesteśmy w stanie zapamiętać tylko jedną literę, a aby zapisać jakieś słowo, potrzebujemy więcej liter niż jedna. Na przykład aby zapisać słowo „Arystoteles” potrzebujemy aż 11 bajtów (tyle ma liter to słowo). Bajt więc jest również za małą jednostką, aby komputery mogły działać i spełniać swoje zadanie.
Przypomnijmy :
Bajt to osiem bitów: 1111 1111 = 255 (256 różnych wartości od 0 do 255)
Dwa bajty to więc 16 bitów (cyfr 0 i 1). Dla ułatwienia zapisuje się jako 21
Cztery bajty to już 32 bity (cyfr 0 i 1). Dla ułatwienia zapisuje się jako 22
Osiem bajtów to aż 64 bity (cyfr 0 i 1). Dla ułatwienia zapisuje się jako 23
Szesnaście bajtów to 128 bitów (cyfr 0 i 1). Dla ułatwienia zapisuje się jako 24
Trzydzieści dwa bajty, no to już aż 256 bitów, co w informatyce zapisuje się jako 25.
Spójrz na potęgi liczby 2. Układają się one w ciąg 1,2,3,4,5... itd.
Dalej polecimy więc tymi potęgami:
26 = 64 bajty = 512 bitów
27 = 128 bajtów = 1024 bity
28 = 256 bajtów = 2048 bitów
29 = 512 bajtów = 4096 bitów
210 = 1024 bajtów = 8192 bitów
I tutaj dochodzimy do poszukiwanej liczby 1024. Więc przy pomocy 8192 bitów możemy zapisać 1024 bajtów, a nie 1000. Ponieważ komputery posługują się bajtami, które składają się z ośmiu bitów liczba 1000 nie była by całkowicie wypełniona wszystkimi możliwościami układów cyfr 0 i 1. A informatycy są ludźmi skąpymi, i szkoda byłoby im tracić tych kilka bitów. A tak naprawdę, bardzo utrudniałoby to obliczenia w komputerze.
Ale to jeszcze nie koniec. Liczmy dalej.
Dla ułatwienia zamieniamy bity na bajty (i tak wiemy, że bajt to osiem pełnych bitów).
21 mówi tyle, że z jednego układu dwóch cyfr (0 i 1) można otrzymać 2 bajty.
22 mówi tyle, że z dwóch układów dwóch cyfr (0 i 1) można otrzymać 4 bajty.
23 mówi tyle, że z trzech układów dwóch cyfr (0 i 1) można otrzymać 8 bajtów.
24 mówi tyle, że z czterech układów dwóch cyfr (0 i 1) można otrzymać 16 bajtów.
I tak dalej aż do 210, które mówi tyle, że z dziesięciu układów dwóch cyfr (0 i 1) można otrzymać 1024 bajtów.
Przyjęło się używać w tym zakresie jednostki „kilo”. W dzisiejszych czasach kilobajt to mała jednostka, więc posługujemy się większymi:
megabajt to 1024 x 1024 = 1 048 576 bajtów
gigabajt to 1024 x 1024 x 1024 = 1 073 741 824 bajtów
terabajt to 1024 x 1024 x 1024 x 1024 = 1 099 511 627 776 bajtów
i tak dalej...
Niestety rodzi to straszliwe problemy. Na przykład, producenci dysków twardych udają, że nie są informatykami. Dla nich 1 kilobajt to nie 1024 bajty, lecz zaledwie 1000 bajtów. Dlatego jak kupujemy dysk twardy o pojemności 500GB, otrzymujemy urządzenie zdolne zapisać tylko 500 000 000 000 bajtów a nie tak jak powinno być 5 36 870 912 000 bajtów. Co ciekawe, systemy operacyjne dalej przeliczają wielkości dysków po „informatycznemu”, czyli stosując przelicznik 1024, przez co dysk 500GB często widziany jest w systemie jako 465GB (odchodzi jeszcze pojemność na dodatkowe dane systemowe, ale to już nie temat na ten artykuł).
Międzynarodowa Komisja Elektrotechniczna próbowała jakoś poprawić tą sytuację niejednoznaczności wprowadzając nieco zmodyfikowane jednostki, w których kilobajt zapisywałoby się jako „KiB” i zwało wtedy „kibibajtem”, ale niestety, nie przyjmuje się ta nomenklatura ani na rynku, ani w światku informatycznym. Zresztą problemów jest więcej. Chociażby skrócony zapis kilobajta. Jak go rozróżnić od kilobita? Czasami stosuje się zapisy: mała litera dla bita, wielka litera dla bajta: 1kb - kilobit, 1kB – kilobajt, ale i to jest rzadko stosowane w tekstach informatycznych.
Mam nadzieję, że ten artykuł pomoże, choć trochę, zrozumieć skomplikowany świat nomenklatury informatycznej i pozwoli dogadać się z niektórymi informatykami, dla których kilo to 1024 a nie normalne 1000.