Bajt

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania
Ujednoznacznienie Zobacz też: inne znaczenia.
Wielokrotności bajtów
Przedrostki dziesiętne
(SI)
Przedrostki binarne
(IEC 60027-2)
Nazwa Symbol Mnożnik Nazwa Symbol Mnożnik
kilobajt kB 103=10001 kibibajt KiB 210=10241
megabajt MB 106=10002 mebibajt MiB 220=10242
gigabajt GB 109=10003 gibibajt GiB 230=10243
terabajt TB 1012=10004 tebibajt TiB 240=10244
petabajt PB 1015=10005 pebibajt PiB 250=10245
eksabajt EB 1018=10006 eksbibajt EiB 260=10246
zettabajt ZB 1021=10007 zebibajt ZiB 270=10247
jottabajt YB 1024=10008 jobibajt YiB 280=10248

Bajt (dop. bajtu lub bajta[1]) – najmniejsza adresowalna jednostka informacji pamięci komputerowej, składająca się z bitów.

Zwykle przyjmuje się, że jeden bajt to 8 bitów, choć to nie wynika z powyższej definicji. W związku z tym w praktyce jeden bajt może zawierać dowolną liczbę bitów. Aby uniknąć niejednoznaczności, jednostka składająca się z ośmiu bitów zwana jest również oktetem. Bywa też że "bajt" definiuje się jako 8 bitów, najmniejszą adresowalną jednostkę pamięci – char.

W starszych maszynach nie stosowano pojęcia bajt ani oktet, najmniejszą jednostką było słowo maszynowe (np. 24-bitowe w maszynach standardu ICL, jak polskie "Odry", albo 60-bitowe w maszynach CDC czy 36-bitowe w Honeywell). W Odrach serii 1300 rozkazy działające na znakach adresowały pojedynczy znak używając specjalnego dla nich trybu adresowania (dodatkowych 2 bitów adresu znaku w słowie).

Ośmiobitowy bajt można podzielić na dwa czterobitowe nibble (od ang. nibble – kąsek) bądź tetrady. Wyróżnia się mniej znaczący (dolny) i bardziej znaczący (górny) nibble/tetradę, składające się odpowiednio z bitów 0-3 i 4-7. Spotyka się też określenie strefa i cyfra wywodzące się od kodowania znaków kodem EBCDIC, oznaczające odpowiednio starszą i młodszą tetradę. Określenia nibble używa się często przy operacjach w kodzie BCD lub skompresowanym BCD.

Historia[edytuj | edytuj kod]

Jako pierwszy, terminu bajt użył Werner Buchholz w lipcu 1956 podczas projektowania komputera IBM Stretch[2][3]. Początkowo oznaczał dane 4-bitowe, co pozwalało na zapis 16 różnych liczb, lecz na etapie produkcji został zredukowany do 3 bitów (8 różnych liczb) – główne operacje komputerowe wykorzystywały bajt 3-bitowy. Bajt 8-bitowy został upowszechniony jako standard wraz z pojawieniem się komputera System/360. Słowo "bajt" (ang. byte) powstało od angielskiego "bite" (gryźć), jako najmniejsza porcja danych, które komputer może "ugryźć" za jednym razem (czyli pobrać, zapisać, przetworzyć). Dzięki temu uniknięto pomyłek z bitem, ale także było to spowodowane skłonnością ówczesnych naukowców do przeobrażania i tworzenia nowych nazw. Bajt również był nazywany "8-bitowym bajtem" dla podkreślenia, że jest zestawem n bitów oraz tego, że może mieć również inny rozmiar.

  1. Sekwencja sąsiadujących bitów w szeregowym strumieniu danych (modemy, komunikacja satelitarna lub dane z głowicy dysku twardego), która jest najmniejszą jednostką informacji. Takie bajty mogą zawierać bity startu, bity stopu, bity parzystości, składając się z 7 do 12 bitów, wśród których zawarty jest pojedynczy 7-bitowy kod ASCII.
  2. Typ danych w określonych językach programowania. Język C oraz C++ definiują bajt jako "adresowalna jednostka danych, na tyle duża, by można było do niej przypisać każdy znak z zestawu znaków środowiska wykonawczego" (paragraf 3.6 standardu C). Typ danych char języka C musi zawierać co najmniej 8 bitów (paragraf 5.2.4.2.1), stąd bajtem może być jedna z 256 różnych wartości (bez względu czy dana to signed char czy unsigned char). Różne implementacje języka C i C++ definiują "bajt" jako daną 8-, 9-, 16-, 32- lub 36-bitową[4][5]. Właściwa liczba bitów w poszczególnych implementacjach jest podana jako CHAR_BIT w pliku nagłówkowym limits.h. W Javie bajt jest zawsze zdefiniowany jako 8-bitowy, będący typem danych ze znakiem (ang. signed data type), stąd obejmuje wartości od -128 do 127.

Wczesne mikroprocesory, takie jak Intel 8008 (poprzednik 8080 i 8086), mogły wykonywać niektóre operacje na 4 bitach, takie jak DAA (ang. Decimal Adjust after Addition) oraz ustawianie flagi "half carry" (połowicznego przeniesienia), które służyły do implementacji arytmetyki dziesiętnej. Te 4-bitowe typy danych nosiły nazwę "nibble".

Historyczne dokumenty IETF opisują różne przykłady bajtów. RFC 608 podaje rozmiar bajta dla hostów FTP (atrybut FTP-BYTE-SIZE w tablicy hostów ARPANET) jako 36 bitów dla komputerów PDP-10 i 32 bity dla IBM 360.[6]

Oznaczenia[edytuj | edytuj kod]

Najczęściej stosowanym skrótem dla bajta jest wielka litera B (w odróżnieniu od bitu oznaczanego małą literą b). Takie oznaczenie koliduje wprawdzie z oznaczeniem bela, ale nie sprawia to większych problemów: bela używa się przeważnie z przedrostkiem decy, decybel [dB], niestosowanego (podobnie jak innych podwielokrotności) do bajtów, a poza tym jednostki te występują wyjątkowo rzadko obok siebie.

Można się także spotkać z oznaczeniem bajta małą literą b (bit oznacza się wtedy słowem bit), jednak pokrywa się ono z najpowszechniejszym oznaczeniem bitu i nie jest zalecane.

Przedrostki[edytuj | edytuj kod]

Stosowanie przedrostków kilo, mega, giga itd. jako do określania odpowiednich potęg liczby dwa jest niezgodne z wytycznymi układu SI (np. kilo oznacza 1000, a nie 1024). W celu odróżnienia przedrostków o mnożniku 1000 od przedrostków o mnożniku 1024, w styczniu 1997 pojawiła się propozycja ujednoznacznienia opracowana przez IEC polegająca na dodawaniu litery "i" po symbolu przedrostka dwójkowego, oraz "bi" po jego nazwie. Nowe przedrostki nazywane zostały przedrostkami dwójkowymi (binarnymi). Jednak ta propozycja rozwiązania problemu niejednoznaczności przedrostków nie została przyjęta przez wszystkie środowiska. Przykładowo producenci nośników pamięci i urządzeń sieciowych, z powodów marketingowych, wolą korzystać z przedrostków układu SI, co bywa źródłem nieporozumień co do faktycznej pojemności pierwszych i prędkości drugich (która podawane jest w bitach na sekundę).

Zobacz też[edytuj | edytuj kod]

WiktionaryPl nodesc.svg
Zobacz hasło bajt w Wikisłowniku

Przypisy

  1. Mirosław Bańko: Bity i bajty. Poradnia językowa PWN. [dostęp 2009-02-22].
  2. Timeline Of The IBM Stretch/Harvest Era (1956–1961) (ang.). computerhistory.org. [dostęp 2009-06-16].
  3. byte (ang.). catb.org. [dostęp 2009-06-16].
  4. Marshall Cline: C++ FAQ Lite (ang.). 2 stycznia 2009. [dostęp 2009-06-16].
  5. Jack Klein: Integer Types In C and C++ (ang.). 2008. [dostęp 2011-08-05].
  6. M.D. Kudlick: Host Names On-Line (ang.). 10 stycznia 1974. [dostęp 2009-06-16].