Co to jest bajt?
Bajt to jednostka danych cyfrowych złożona z 8 bitów, które razem mogą przedstawić 256 różnych wartości, od 0 do 255. W większości komputerów jest to najmniejsza jednostka pamięci z własnym adresem, a rozmiary plików liczy się w bajtach.
Aktualizacja: 24 września 2026
- 48H
- 69i
- 20␣
- F0 9F 98 80😀
Znaki: 4, bajty: 7
Litera A zapisana w twoim komputerze to liczba 65, a liczba 65 jest zapisana jako osiem bitów: 01000001. Taka grupa ośmiu bitów to bajt. Adresy pamięci liczą bajty, rozmiary plików liczą bajty, a prawie każdy typ danych w języku programowania ma długość wyrażoną całkowitą liczbą bajtów.
Dlaczego bajt ma 8 bitów
Słowo "byte" wymyślił Werner Buchholz w 1956 roku, gdy pracował nad komputerem Stretch w IBM. Napisał je przez y, żeby nie mylono go z "bit". Wczesne komputery używały grup różnej wielkości, często 6-bitowych, co wystarczało na wielkie litery i cyfry, ale nie na małe litery.
System/360 firmy IBM, wydany w 1964 roku, używał bajtów 8-bitowych, a reszta branży poszła jego śladem. Osiem bitów daje 256 wartości, czyli miejsce na wielkie i małe litery, cyfry, znaki interpunkcyjne i kody sterujące. Osiem to też potęga dwójki, więc bajt dzieli się równo na dwie połowy po 4 bity, a każdą zapisuje się jedną cyfrą szesnastkową. Standardy sieciowe wciąż mówią "oktet", gdy muszą jasno zaznaczyć, że chodzi dokładnie o 8 bitów.
Co mieści jeden bajt
Bajt ma 256 możliwych wzorów, od 00000000 do 11111111. Programy odczytują je na kilka standardowych sposobów:
- jako liczbę bez znaku od 0 do 255;
- jako liczbę ze znakiem od -128 do 127;
- jako jeden znak, na przykład
A(65) albo!(33); - jako dwie cyfry szesnastkowe, od
00doFF.
Typ bytes w Pythonie to ciąg takich wartości i odrzuca wszystko spoza zakresu od 0 do 255:
b'Hi!'
[72, 105, 33]
01001000 48
ValueError: bytes must be in range(0, 256)
Nie każdy znak mieści się w jednym bajcie. UTF-8, kodowanie używane przez większość internetu, zapisuje 128 znaków ASCII po 1 bajcie, a wszystkie pozostałe na 2 do 4 bajtach:
A 1 bytes: [65] 41
é 2 bytes: [195, 169] c3a9
€ 3 bytes: [226, 130, 172] e282ac
😀 4 bytes: [240, 159, 152, 128] f09f9880
Dlatego długość napisu liczona w znakach i jego rozmiar w bajtach mogą się różnić.
Bit a bajt
Bit to pojedyncze 0 albo 1. Bajt to 8 bitów. Obie jednostki łatwo pomylić, bo ich symbole różnią się tylko wielkością litery:
| Bit | Bajt | |
|---|---|---|
| Co to jest | Jedna cyfra dwójkowa | 8 bitów |
| Możliwe wartości | 2 (0 lub 1) | 256 (od 0 do 255) |
| Symbol | b (mała litera) | B (wielka litera) |
| Zwykle mierzy | Prędkość sieci: Mb/s, Gb/s | Pamięć i rozmiar plików: kB, MB, GB |
| Przykład | Łącze 100 Mb/s | Zdjęcie 5 MB |
Żeby zamienić bity na bajty, podziel przez 8. Łącze 100 Mb/s przesyła najwyżej 12,5 MB na sekundę, więc pobranie zdjęcia 5 MB zajmie na nim co najmniej 0,4 sekundy.
Kilobajty, megabajty i gigabajty
Większe jednostki występują w dwóch systemach, a różnica między nimi sprawia, że nowy dysk wygląda w Windowsie na mniejszy niż na etykiecie.
| Dziesiętne (SI) | Bajty | Dwójkowe (IEC) | Bajty |
|---|---|---|---|
| kilobajt (kB) | 1000 | kibibajt (KiB) | 1024 |
| megabajt (MB) | 1 000 000 | mebibajt (MiB) | 1 048 576 |
| gigabajt (GB) | 1 000 000 000 | gibibajt (GiB) | 1 073 741 824 |
| terabajt (TB) | 1 000 000 000 000 | tebibajt (TiB) | 1 099 511 627 776 |
Producenci dysków, prędkości sieci i macOS (od wersji 10.6 z 2009 roku) używają jednostek dziesiętnych. Rozmiary RAM i Windows używają jednostek dwójkowych, ale Windows oznacza je jako KB, MB i GB. IEC wprowadziła nazwy kibibajt, mebibajt i gibibajt w 1998 roku, żeby skończyć z tym zamieszaniem, choć wiele programów nadal ich nie używa.
1.0 TB (decimal, used on the box)
931.3 GiB (binary, what Windows calls GB)
12.5 MB per second
Nic nie zginęło. Dysk mieści bilion bajtów obiecany na pudełku; Windows po prostu dzieli trzy razy przez 1024 zamiast przez 1000.
Bajty w kodzie
Każda wartość w pamięci zajmuje całkowitą liczbę bajtów. W C tę liczbę podaje sizeof. char ma z definicji dokładnie 1 bajt, a w obecnych 64-bitowych systemach Linux, macOS i Windows short ma 2 bajty, int 4, a double 8. Tablica 1000 wartości int zajmuje więc 4000 bajtów.
printf("%zu\n", sizeof(int)); /* prints 4 */
Typ byte w Javie jest zawsze ze znakiem, od -128 do 127, więc wartość taka jak 200 się w nim nie mieści:
byte b = (byte) 200; // b is -56: the same 8 bits, read as signed
Surowe dane, takie jak obrazy, pliki skompresowane i pakiety sieciowe, obsługuje się jako tablicę bajtów: bytes i bytearray w Pythonie, byte[] w Javie, Uint8Array w JavaScripcie. Otwarcie pliku w Pythonie w trybie "rb" daje jego bajty zamiast tekstu.
Skróty (hashe) i sumy kontrolne też mierzy się w bajtach. Skrót SHA-256 ma 32 bajty, dlatego wyświetla się jako 64 znaki szesnastkowe, a suma kontrolna CRC32 ma 4 bajty. Generator hashy pokazuje obie dla dowolnego tekstu.
Co dalej
O jednostce mniejszej od bajtu przeczytasz na stronie co to jest bit, a o tym, jak bajty pomagają wykrywać uszkodzone pliki, na stronie co to jest suma kontrolna. Konwerter systemów liczbowych zamienia dowolny bajt między systemem dziesiętnym, dwójkowym i szesnastkowym, a przewodnik po typach danych w C podaje rozmiar każdego typu w C w bajtach.
Najczęściej zadawane pytania
Jak nazywa się 8 bitów 11111111?
11111111 to bajt, w którym każdy bit ma wartość 1. Odczytany jako liczba bez znaku daje 255, największą wartość, jaką może przechować bajt, zapisywaną szesnastkowo jako FF. Odczytane jako bajt ze znakiem w kodzie uzupełnień do dwóch te same bity oznaczają -1.Dlaczego 8 bitów to 1 bajt?
Dlaczego 4 bity nazywa się nibble?
Czy 1 bajt to 4 bity?
Co jest większe, bajty czy GB?
Jak wygląda jeden bajt?
01000001. Ten wzór to liczba 65, która jest też kodem litery A w ASCII. Programiści zwykle zapisują bajt jako dwie cyfry szesnastkowe, więc 01000001 staje się 41.