Stronę najlepiej oglądać w rozdzielczości ekranu 1280x1024. Przy mniejszych rozdzielczościach skalowanie zdjęć z galerii powoduje znaczne zmniejszenie ich jakości. |
Gościmy
Naszą witrynę przegląda teraz 24 gości| Dlaczego kilobajt to 1024 bajty a nie 1000 bajtów? |
| Inne problemy informatyczne | |
| niedziela, 17 maja 2009 23:18 | |
|
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 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 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 też 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 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.
|
Komentarze
O ile użycie tego samego słowa "kilo" na nazwanie dwóch różnych przedrostów było uzasadnione i całkiem logiczne, o tyle stworzenie całkiem nowych jednostek będących połączeniem jednych i drugich, wprowadzające chaos i zniszczenie było fatalne w skutkach.
Dzisiaj już ciężko jest spotkać dysk twardy czy pendrive którego pojemność wyrażona jest w jednostkach binarnych. Już nikt tego nie robi bo konsumenci przyzwyczaili się do takiego przekręcania i spodziewają się go z automatu więc nikt świadomie nie "obniży" pojemności swoich produktów.
Tu jeszcze parę bzdur zostało powiedziane o dyskach twardych. Otóż przede wszystkim autor artykułu ma rację pisząc, że nie używa się już binarnego nazewnictwa tylko to hybrydowe. Po drugie jest różnica między pojemnością dysku twardego a pojemnością partycji (to co w Eksploratorze Windows nazwane jest "dyskiem"). Zazwyczaj sumaryczna wielkość wszystkich partycji będzie prawie identyczna z pojemnością dysku. Na wspomniane "dane systemowe" poświęcane jest zaledwie kilka kilobajtów - MBR (512 bajtów, zawiera między innymi wpis o podziale na partycje) oraz VBRy, MS Windows dodatkowo może sobie użyć 8MB na tzw. dyski dynamiczne. I tyle, cała reszta siedzi na partycjach i jest wliczana do wskaźnika "wykorzystania dysku", nie tylko zawartość plików i katalogów ale też metainformacje mówiąca gdzie ów pliki/katalogi się znajdują oraz te nadmiarowe bajty użyte w celu przyspieszenia pracy. Te nadmiarowe informacje wcale nie są odliczane od wskaźnika wielkości partycji. W innym przypadku ta wielkość ciągle by nam się zmieniała.
| Cytować
Tak cały "problem" rozchodzi się o system binarny i to że taniej jest robić kości pamięci o pojemności będącej wielokrotnością 2. Nikt nie będzie produkować gości o dziesiętnej pojemności tylko po to by być ścisłym z językiem mówionym. Nikt nie będzie przychodził do sklepu i mówił poproszę kość pamięci o pojemności 1073741824 bajtów, każdy powie 1GB i będzie wiadomo o co chodzi.
Co do dysków twardych. To nadal używają one za jednostek "informatycznych " 1024. Spadek wielkości nie wynika z marketingowego przekręcania danych, ale z tego, że cześć powierzchni dysku trzeba poświęcić na dane systemowe, względnie nawet porzucić część powierzchni by zapewnić szybkie działanie. To, że masz katalogi, pliki, podział na partycje i że to wszystko jest szybkie i niezawodne, nie jest za darmo. Gdzieś te dane (czasami nadmiarowe) trzeba zapisać.
Na dodatek zapis następuje całymi blokami. Oznacza to, że jedno-bajtowy plik zajmuje minimum 32kB (standardowa wielkość klastra na dużym dysku twardym).
W pierwszych dyskach wielkość klastra wynosiła 512 bajtów, ale koszt utrzymania informacji o strukturze plików był za duży, wiec urosło to do obecnych 32kB.
| Cytować
| Cytować
| Cytować
jedynie marketing tego przestrzega bo im sie to oplaca :) ale maja racje dlatego nikt ci nie uwzgledni reklamacji jak kupisz dysk 1TB i nagle sie on skurczy prawie o 10% i nikogo nie bedzie interesowalo ze ktos gdzies kiedys sobie przyjal ze kilo to 1024 i ze tak cie nauczyli. bo to nie jest okreslone w zadnym dokumencie opisujacym standardy. wszedzie stoi jak byk 1000.
a to o czym pisze kolega to przedrostki binarne. ustandaryzowane pod koniec zeszlego wieku i opisane w IEC 60027-2. kto jest zainteresowany a niechce mu sie czytac calosci to polecam chociazby tabelke na http://pl.wikipedia.org/wiki/Bajt
| Cytować
| Cytować
- Czy możesz mi pożyczyć 1000 złotych?
- Pożyczę Ci 1024, będzie na równo.
:)
Bardzo fajny artykuł.
| Cytować
| Cytować
| Cytować
| Cytować
| Cytować
| Cytować
| Cytować
| Cytować
| Cytować
| Cytować
| Cytować
Kanał RSS z komentarzami do tego postu.