Przejdź do zawartości

Bajt

Z Wikipedii, wolnej encyklopedii
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]) – historycznie najmniejsza adresowalna jednostka informacji pamięci komputerowej[2], najczęściej składająca się z 8 bitów[3].

W związku z tym, że jeden bajt mógł zawierać dowolną liczbę bitów starsze normy zalecają używanie terminu oktet. Aby uniknąć niejednoznaczności IEC zaleca używanie terminu bajt tylko w znaczeniu oktetu[3].

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).

Bajt można podzielić na dwa czterobitowe nibble lub nybble (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[4][5]. 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 IBM System/360. Słowo bajt (ang. byte) powstało od angielskiego bite (kęs), jako najmniejsza porcja danych, którą komputer może „ugryźć” za jednym razem (czyli pobrać, zapisać, przetworzyć). Dzięki temu unikano pomyłek z bitem, jednak było to także 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, gdyż może składać się także z innej ich liczby:

  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 na to, 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ą[6][7]. Właściwa liczba bitów w poszczególnych implementacjach jest podana jako wartość 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 np. 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[8]. Te 4-bitowe typy danych nosiły nazwę nibble (kęsek).

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[9].

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 (słowo 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ń względem faktycznej pojemności pierwszych i prędkości drugich – które podawane są w bitach na sekundę.

Zobacz też

[edytuj | edytuj kod]

Przypisy

[edytuj | edytuj kod]
  1. Mirosław Bańko: Bity i bajty. Poradnia językowa PWN. [dostęp 2009-02-22].
  2. Słownik terminologiczny informacji naukowej, Maria Dembowska, Wrocław–Warszawa–Kraków–Gdańsk: Zakład Narodowy imienia Ossolińskich, 1979, s. 28.
  3. a b IEC 80000-13, 2008, s. 15.
  4. Timeline Of The IBM Stretch/Harvest Era (1956–1961). computerhistory.org. [dostęp 2009-06-16]. (ang.).
  5. byte. catb.org. [dostęp 2009-06-16]. (ang.).
  6. Marshall Cline: C++ FAQ Lite. 2 stycznia 2009. [dostęp 2009-06-16]. (ang.).
  7. Jack Klein: Integer Types In C and C++. 2008. [dostęp 2011-08-05]. [zarchiwizowane z tego adresu (2016-06-10)]. (ang.).
  8. Gary Syck, Turbo Assembler®. Biblia użytkownika, Warszawa: LT&P, 1994, s. 156, ISBN 83-901237-2-X.
  9. M.D. Kudlick, Host names on-line, RFC 608, IETF, styczeń 1974, DOI10.17487/RFC0608, ISSN 2070-1721, OCLC 943595667 (ang.).