W logu serwera widzisz rozmiar pliku w bajtach, a w opisie pamięci telefonu pojawiają się gigabajty. Bajt to zwykle grupa ośmiu bitów, choć przy pracy z tekstem liczba bajtów nie zawsze odpowiada liczbie znaków.
Bajt łączy osiem bitów, ale nie zawsze oznacza jeden znak
- 1 bajt = 8 bitów.
- Bit przyjmuje wartość 0 albo 1, a bajt grupuje osiem takich wartości.
- Wielka litera B oznacza bajt, a mała b - bit.
- UTF-8 używa od 1 do 4 bajtów na znak, zależnie od znaku.
- kB i KiB oznaczają różne wielkości.
Bajt to osiem bitów, z których komputer buduje dane
Wyobraź sobie osiem małych przełączników, z których każdy może być w pozycji 0 albo 1. Każdy przełącznik odpowiada jednemu bitowi, a cała ósemka tworzy bajt, czyli wygodną porcję danych używaną przy zapisie i odczycie informacji.
Osiem bitów pozwala zapisać 256 różnych układów, od 00000000 do 11111111. W typowej interpretacji bez znaku odpowiadają one liczbom od 0 do 255. Definicję bajtu jako ciągu ośmiu bitów podaje glosariusz NIST.
Duża litera B może zmienić odczyt transferu osiem razy
W opisie połączenia internetowego szybkość często zapisuje się w bitach na sekundę, a rozmiar pliku w bajtach. Małe „b” oznacza bit, duże „B” bajt, więc 8 Mb/s odpowiada teoretycznie 1 MB/s przed uwzględnieniem narzutu protokołów i innych warunków sieci.
To częste źródło pomyłki przy porównywaniu prędkości łącza z szybkością pobierania. Jeśli licznik pokazuje MB/s, a oferta operatora Mb/s, porównuj te same jednostki, zamiast zakładać, że liczby powinny być identyczne.
Jeden znak tekstu może zajmować kilka bajtów
Osiem bitów nie oznacza jednego znaku. Bajt opisuje ilość danych, a kodowanie określa, jak te dane zamieniają się na znaki. W UTF-8 znak może zajmować od jednego do czterech bajtów, co opisuje dokumentacja MDN dotycząca UTF-8.
Przykładowo tekst „Aą” zapisany w UTF-8 zajmuje 3 bajty: „A” jeden, a „ą” dwa. To przydatna wskazówka przy limitach długości pól, rozmiarze plików tekstowych i analizie żądań API. Liczba znaków i liczba bajtów to różne pomiary, więc limit 20 znaków nie musi oznaczać limitu 20 bajtów.
Uważam, że właśnie ten przykład najlepiej porządkuje intuicję: bajt jest porcją zapisu, a nie gotowym symbolem widocznym na ekranie.
kB i KiB nie oznaczają dokładnie tej samej pojemności
Rozmiary plików i pamięci potrafią się różnić między etykietą produktu a wskazaniem systemu. Przyczyną bywa sposób liczenia przedrostków: kB oznacza 1000 bajtów, a KiB 1024 bajty. Tę różnicę i nazwy przedrostków binarnych opisuje zestawienie NIST dotyczące przedrostków binarnych.
Podobnie MB to 1 000 000 bajtów, natomiast MiB to 1 048 576 bajtów. To nie usterka dysku ani brakujące dane: porównujesz pojemność podaną w systemie dziesiętnym z odczytem korzystającym z jednostek binarnych.
Dobierz jednostkę do tego, co właśnie mierzysz
Jednostka podpowiada, jak czytać daną wartość. Przy transferze patrz na bity na sekundę, przy rozmiarze pliku na bajty, a przy analizie tekstu sprawdź kodowanie i limit bajtów.
| Sytuacja | Co oznacza wartość | Co zrobić |
|---|---|---|
| Oferta internetu podaje Mb/s | Prędkość w megabitach na sekundę | Podziel wartość przez osiem, by uzyskać teoretyczne MB/s |
| Plik ma rozmiar w kB lub MB | Przedrostek dziesiętny | Sprawdź, czy system pokazuje tę samą jednostkę |
| Limit pola API podano w bajtach | Długość zakodowanego zapisu | Uwzględnij kodowanie, bo znaki mogą mieć różną długość |
Gdy następnym razem zobaczysz wartość w bajtach, zapytaj najpierw, czy opisuje plik, transfer czy tekst. Ta drobna różnica pozwala uniknąć wielu pomyłek w kodzie i przy codziennym korzystaniu z technologii.
