Bajt — Byte

bajt
System jednostkowy jednostka pochodna od bitu
Jednostką informacje cyfrowe, rozmiar danych
Symbol B lub  O

Bajt to jednostka informacji cyfrowych , które najczęściej składa się z ośmiu bitów . Historycznie bajt był liczbą bitów używanych do zakodowania pojedynczego znaku tekstu w komputerze iz tego powodu jest to najmniejsza adresowalna jednostka pamięci w wielu architekturach komputerowych . Aby odróżnić bajty o dowolnej wielkości od wspólnej 8-bitowej definicji, dokumenty protokołów sieciowych , takie jak The Internet Protocol ( RFC  791 ), określają 8-bitowy bajt jako oktet . Te bity w oktecie są zwykle liczone z numeracją od 0 do 7 lub 7 do 0 w zależności od endianowości bitu . Pierwszy bit ma numer 0, co sprawia, że ​​ósmy bit ma numer 7.

Rozmiar bajtu był historycznie zależny od sprzętu i nie istniały żadne ostateczne standardy, które nakazywałyby ten rozmiar. Zastosowano rozmiary od 1 do 48 bitów. Sześć-bitowy kod charakter był często używany w systemach wczesnego wdrożenia kodujących i komputery wykorzystujące sześć-bitowe i dziewięć-bitowych bajtów były powszechne w 1960 roku. Systemy te często miały słowa pamięci o długości 12, 18, 24, 30, 36, 48 lub 60 bitów, co odpowiada 2, 3, 4, 5, 6, 8 lub 10 bajtom sześciobitowym. W tamtych czasach grupowanie bitów w strumieniu instrukcji było często określane jako sylaby lub slab , zanim termin bajt stał się powszechny.

Nowoczesny, de facto standard ośmiu bitów, jak udokumentowano w ISO/IEC 2382-1:1993, jest wygodną potęgą dwójki, pozwalającą na binarnie zakodowane wartości od 0 do 255 dla jednego bajtu-2 do potęgi 8 to 256. norma IEC 80000-13 skodyfikowała to powszechne znaczenie. Wiele typów aplikacji używa informacji reprezentowanych w ośmiu lub mniejszej liczbie bitów, a projektanci procesorów zwykle optymalizują pod tym kątem. Popularność głównych komercyjnych architektur obliczeniowych pomogła we wszechobecnej akceptacji 8-bitowego bajtu. Nowoczesne architektury zazwyczaj używają słów 32- lub 64-bitowych, zbudowanych odpowiednio z czterech lub ośmiu bajtów.

Symbol jednostki dla bajtu został oznaczony wielką literą B przez Międzynarodową Komisję Elektrotechniczną (IEC) i Instytut Inżynierów Elektryków i Elektroników (IEEE). Na arenie międzynarodowej oktet jednostkowy , symbol o, wyraźnie określa sekwencję ośmiu bitów, eliminując potencjalną niejednoznaczność terminu „bajt”.

Etymologia i historia

Termin bajt został ukuty przez Wernera Buchholza w czerwcu 1956 roku, we wczesnej fazie projektowania komputera IBM Stretch , który miał adresowanie do instrukcji bitowych i zmiennej długości pola (VFL) z zakodowanym w instrukcji rozmiarem bajtu. Jest to celowe respelling od ukąszenia , aby uniknąć przypadkowego mutację do bitu .

Innym źródłem bajtu dla grup bitów mniejszych niż rozmiar słowa komputerowego, a w szczególności grup składających się z czterech bitów , jest Louis G. Dooley, który twierdził, że ukuł ten termin podczas pracy z Julesem Schwartzem i Dickiem Beelerem nad systemem obrony powietrznej nazwany SAGE w MIT Lincoln Laboratory w 1956 lub 1957, który został wspólnie opracowany przez Rand , MIT i IBM. Później język Schwartza JOVIAL faktycznie używał tego terminu, ale autor niejasno przypominał, że wywodzi się z AN/FSQ-31 .

Wczesne komputery wykorzystywały różne czterobitowe reprezentacje dziesiętne kodowane binarnie (BCD) i sześciobitowe kody do drukowania wzorów graficznych, powszechnych w armii amerykańskiej ( FIELDATA ) i marynarce wojennej . Reprezentacje te zawierały znaki alfanumeryczne i specjalne symbole graficzne. Zestawy te zostały rozszerzone w 1963 roku do siedmiu bitów kodowania, zwanego American Standard Code for Information Interchange (ASCII) jako Federalny Standard Przetwarzania Informacji , który zastąpił niezgodne kody teledrukarek używane przez różne oddziały rządu USA i uniwersytety w latach 60. . ASCII zawierał rozróżnienie wielkich i małych liter oraz zestaw znaków kontrolnych, aby ułatwić transmisję języka pisanego, a także funkcje urządzenia drukującego, takie jak przewijanie strony i wysuwanie wiersza oraz fizyczna lub logiczna kontrola przepływu danych przez transmisję głoska bezdźwięczna. We wczesnych latach sześćdziesiątych, gdy był również aktywny w standaryzacji ASCII, IBM jednocześnie wprowadził do swojej linii produktów System/360 ośmiobitowy rozszerzony kod binarny dziesiętny (EBCDIC), rozszerzenie ich sześciobitowego kodu dziesiętnego zakodowanego binarnie (BCDIC). ) reprezentacje używane we wcześniejszych dziurkaczach kart. Ważność System/360 doprowadziła do wszechobecnego przyjęcia ośmiobitowego rozmiaru pamięci, podczas gdy w szczegółach schematy kodowania EBCDIC i ASCII są różne.

Na początku lat 60. AT&T wprowadziła telefonię cyfrową na dalekobieżnych liniach miejskich . Używały one ośmiobitowego kodowania μ-law . Ta duża inwestycja obiecywała obniżenie kosztów transmisji danych ośmiobitowych.

Rozwój ośmiobitowych mikroprocesorów w latach 70. spopularyzował ten rozmiar pamięci. Mikroprocesory, takie jak Intel 8008 , bezpośredni poprzednik 8080 i 8086 , używane we wczesnych komputerach osobistych, mogły również wykonywać niewielką liczbę operacji na czterobitowych parach w bajcie, takich jak dziesiętne-dodaj-dostosuj ( DAA) instrukcja. Wielkość czterobitowa jest często nazywana nibble , również nybble , co jest wygodnie reprezentowane przez pojedynczą cyfrę szesnastkową .

Termin oktet służy do jednoznacznego określenia rozmiaru ośmiu bitów. Jest szeroko stosowany w definicjach protokołów .

Historycznie termin octad lub octade był używany do oznaczenia ośmiu bitów, a przynajmniej w Europie Zachodniej; jednak to użycie nie jest już powszechne. Dokładne pochodzenie tego terminu jest niejasne, ale można go znaleźć w źródłach brytyjskich, holenderskich i niemieckich z lat 60. i 70. XX wieku oraz w dokumentacji komputerów mainframe firmy Philips .

Symbol jednostki

Symbol jednostki dla bajtu jest określony w normach IEC 80000-13 , IEEE 1541 oraz Metric Interchange Format jako znak wielkiej litery B.

W Międzynarodowym Systemie Ilości (ISQ), B jest symbolem bel , jednostki logarytmicznego współczynnika mocy nazwanej na cześć Alexandra Grahama Bella , co powoduje konflikt ze specyfikacją IEC. Istnieje jednak niewielkie niebezpieczeństwo pomyłki, ponieważ bel jest jednostką rzadko używaną. Jest używany głównie w ułamku dziesiętnym, decybelach (dB), do pomiarów siły sygnału i poziomu ciśnienia akustycznego , podczas gdy jednostka dziesiątej części bajta, decybajt i inne ułamki, są używane tylko w jednostkach pochodnych, takich jak jako szybkości transmisji.

Mała litera o dla oktetu jest zdefiniowana jako symbol oktetu w IEC 80000-13 i jest powszechnie używana w językach takich jak francuski i rumuński , a także jest połączona z przedrostkami metrycznymi oznaczającymi wielokrotności, na przykład ko i Mo.

Użycie terminu octad(e) dla ośmiu bitów nie jest już powszechne.

Jednostki wielobajtowe

Jednostki wielobajtowe
Dziesiętny
Wartość Metryczny
1000 kB kilobajt
1000 2 MB megabajt
1000 3 GB gigabajt
1000 4 TB terabajt
1000 5 PB petabajt
1000 6 EB eksabajt
1000 7 ZB zettabajt
1000 8 YB jottabajt
Dwójkowy
Wartość IEC Pamięć
1024 KiB kibibajt KB kilobajt
1024 2 MiB mebibajt MB megabajt
1024 3 Zawłoka gibibajt GB gigabajt
1024 4 TiB tebibajt TB terabajt
1024 5 PiB pebibajt
1024 6 EiB eksbibajt
1024 7 ZiB zebibajt
1024 8 YiB yobibajt

Istnieje więcej niż jeden system do definiowania większych jednostek na podstawie bajtu. Niektóre systemy są oparte na potęgach 10 ; inne systemy oparte są na uprawnieniach 2 . Nomenklatura tych systemów była przedmiotem zamieszania. Systemy oparte na potęgach 10 niezawodnie wykorzystują standardowe przedrostki SI (' kilo ', ' mega ', ' giga ', ...) i odpowiadające im symbole (k, M, G, ...). Systemy oparte na potęgach 2 mogą jednak używać przedrostków binarnych ('kibi', 'mebi', 'gibi, ...) i odpowiadających im symboli (Ki, Mi, Gi, ...) lub mogą używać przedrostków K, M i G, tworząc niejednoznaczność.

Podczas gdy różnica liczbowa między interpretacjami dziesiętnymi i binarnymi jest stosunkowo niewielka dla kilobajta (około 2% mniejsza niż kibibajt), systemy odbiegają coraz bardziej wraz ze wzrostem jednostek (odchylenie względne rośnie o 2,4% na każde trzy rzędy wielkości). Na przykład yottabajt oparty na mocy 10 jest o około 17% mniejszy niż yobibajt oparty na mocy 2.

Jednostki oparte na potędze 10

Definicja przedrostków przy użyciu potęgi 10 — w której 1 kilobajt (symbol kB) jest zdefiniowany jako równy 1000 bajtów — jest zalecana przez Międzynarodową Komisję Elektrotechniczną (IEC). Norma IEC definiuje osiem takich wielokrotności, do 1 jottabajta (YB), równe 1000 8 bajtów.

Definicja ta jest najczęściej stosowana w odniesieniu do jednostek szybkości transmisji danych w sieciach komputerowych , szybkości transferu magistrali wewnętrznej, dysków twardych i nośników pamięci flash oraz pojemności większości nośników danych , w szczególności dysków twardych , pamięci flash i dysków DVD . Jest to również zgodne z innymi zastosowaniami przedrostków SI w informatyce, takimi jak szybkość zegara procesora lub pomiary wydajności .

Jednostki oparte na potędze 2

System jednostek oparty na potęgach 2, w którym 1 kibibajt (KiB) jest równy 1024 (tj. 2 10 ) bajtów, jest zdefiniowany w międzynarodowej normie IEC 80000-13 i jest obsługiwany przez krajowe i międzynarodowe organy normalizacyjne ( BIPM , IEC, NIST ). Norma IEC definiuje osiem takich wielokrotności, do 1 yobibajta (YiB), równe 1024 8 bajtów.

Alternatywny system nomenklatury dla tych samych jednostek (określany tutaj jako zwyczajowa konwencja ), w którym 1 kilobajt (KB) jest równy 1024 bajtom, 1 megabajt (MB) jest równy 1024 2 bajty i 1 gigabajt (GB) jest równy równa 1024 3 bajty jest wspomniana przez standard JEDEC z lat 90 . Tylko pierwsze trzy wielokrotności (do GB) są wymienione przez standard JEDEC, który nie wspomina o TB i większych. Zwyczajowa konwencja jest wykorzystywana przez system operacyjny Microsoft Windows i pojemność pamięci o dostępie swobodnym , taką jak pamięć główna i rozmiar pamięci podręcznej procesora , oraz w marketingu i rozliczeniach przez firmy telekomunikacyjne, takie jak Vodafone , AT&T , Orange i Telstra .

Historia sprzecznych definicji

Różnica procentowa między dziesiętnymi i binarnymi interpretacjami przedrostków jednostek rośnie wraz ze wzrostem wielkości pamięci

Współczesna pamięć komputerowa ma architekturę binarną, dzięki czemu definicja jednostek pamięci jest najbardziej praktyczna. Użycie przedrostka metryki kilo dla wielokrotności binarnych pojawiło się jako udogodnienie, ponieważ 1024 to około 1000. Ta definicja była popularna we wczesnych dekadach komputerów osobistych , a produkty takie jak format dyskietki DD Tandon 5 14 cale (o pojemności 368 640 bajtów) były reklamowane jako „360 KB”, zgodnie z konwencją 1024 bajtów. Nie był jednak uniwersalny. Shugart SA-400 5 1 / 4 -cal dyskietki odbywa 109375 bajtów nieformatowany i został reklamowane jako „110 kB”, zgodnie z konwencją 1000. Podobnie, 8-calowa dyskietka DEC RX01 (1975) miała sformatowane 256 256 bajtów i była reklamowana jako „256k”. Inne dyski były reklamowane za pomocą kombinacji dwóch definicji: w szczególności 3+1 / 2 dyski HD -cal reklamowane jako „1,44 MB” w rzeczywistości mieć pojemność 1440 KiB, równowartość 1,47 MB lub 1,41 MIB.

W 1995 roku Międzywydziałowy Komitet ds. Nomenklatury i Symboli Międzynarodowej Unii Chemii Czystej i Stosowanej (IUPAC) próbował rozwiązać tę niejednoznaczność, proponując zestaw binarnych przedrostków dla potęg 1024, w tym kibi (kilobinarny), mebi (megabinarny) i gibi (gigabinarny).

W grudniu 1998 r. IEC zajęła się takimi licznymi zastosowaniami i definicjami, przyjmując proponowane przez IUPAC przedrostki (kibi, mebi, gibi itp.) w celu jednoznacznego oznaczenia potęgi 1024. Tak więc jeden kibibajt (1 KiB) to 1024 1   bajt = 1024 bajty , jeden mebibajt (1 MiB) to 1024 2   bajty = 1048576 bajtów i tak dalej.

W 1999 roku Donald Knuth zasugerował nazwanie kibibajta „dużym kilobajtem” ( KKB ).

Nowoczesne definicje standardowe

IEC przyjęła propozycję IUPAC i opublikowała normę w styczniu 1999 r. Prefiksy IEC są obecnie częścią Międzynarodowego Systemu Ilości . IEC dodatkowo określił, że kilobajt powinien być używany tylko w odniesieniu do 1000 bajtów.

Sprawy sądowe o definicję

Pozwy sądowe wynikające z domniemanego nieporozumienia konsumentów co do binarnych i dziesiętnych definicji wielokrotności bajtu generalnie kończyły się na korzyść producentów, a sądy orzekły, że prawna definicja gigabajta lub GB to 1 GB = 1 000 000 000 (10 9 ) bajtów (liczba dziesiętna definicji), a nie definicji binarnej (2 30 ). W szczególności Sąd Okręgowy Stanów Zjednoczonych orzekł, że „Kongres Stanów Zjednoczonych uznał dziesiętną definicję gigabajta za „preferowaną” dla celów „handlu i handlu w USA” […] Ustawodawca Kalifornii podobnie przyjął dziesiętną definicję system dla wszystkich 'transakcji w tym stanie'."

Wcześniejsze procesy zakończyły się ugodą bez orzeczenia sądu w tej kwestii, na przykład pozew przeciwko producentowi napędów Western Digital . Firma Western Digital rozwiązała problem i dodała wyraźne zastrzeżenia do produktów, że pojemność użytkowa może różnić się od pojemności reklamowanej. Seagate został pozwany na podobnych podstawach, a także rozstrzygnięty.

Praktyczne przykłady

Jednostka Przybliżony ekwiwalent
bajt podstawowy latin charakter.
kilobajt tekst „ Jabberwockego
typowa favicon
megabajt tekst Harry Potter i Czara Ognia
gigabajt około pół godziny filmu
Dźwięk w jakości CD Mellon Collie i Infinite Sadness
terabajt największy konsumencki dysk twardy w 2007 roku
Film 1080p 4:3 Avatar: The Last Airbender serial w całości
petabajt 2000 lat muzyki zakodowanej w formacie MP3
eksabajt globalny miesięczny ruch internetowy w 2004 r.
zettabajt globalny roczny ruch internetowy w 2016 r.

Typowe zastosowania

Wiele języków programowania definiuje typ danych byte .

W C i ++ C języki programowania określić bajt jako „ adresowalna jednostka przechowywania danych wystarczająco duży, aby pomieścić każdy członek podstawowego zestawu znaków środowiska wykonawczego ” (klauzula 3.6 standardu C). Standard C wymaga, aby integralny typ danych unsigned char zawierał co najmniej 256 różnych wartości i był reprezentowany przez co najmniej osiem bitów (klauzula 5.2.4.2.1). Różne implementacje C i C++ rezerwują 8, 9, 16, 32 lub 36 bitów na przechowywanie bajtu. Ponadto standardy C i C++ wymagają, aby między dwoma bajtami nie było przerw. Oznacza to, że każdy bit w pamięci jest częścią bajtu.

Bajt pierwotnego typu danych Java jest zdefiniowany jako osiem bitów. Jest to podpisany typ danych, przechowujący wartości od -128 do 127.

Języki programowania .NET, takie jak C#, definiują byte jako typ bez znaku, a sbyte jako podpisany typ danych, przechowując wartości odpowiednio od 0 do 255 i od -128 do 127 .

W systemach transmisji danych bajt jest używany jako ciągła sekwencja bitów w szeregowym strumieniu danych, reprezentująca najmniejszą wyodrębnioną jednostkę danych. Jednostka transmisyjna może dodatkowo zawierać bity startu, bity stopu i bity parzystości , a zatem jej rozmiar może zmieniać się od siedmiu do dwunastu bitów, aby zawierać pojedynczy siedmiobitowy kod ASCII .

Zobacz też

Uwagi

Bibliografia

Dalsza lektura