Відкрити головне меню

Байт (англ. byte) — одиниця вимірювання обсягу цифрової інформації, яка зазвичай містить вісім бітів і представлена двійковим числом. Історично байт був кількістю бітів, яка використовувалася для кодування одного текстового символу в комп'ютері[1][2] і тому він є найменшою адресною одиницею пам'яті в багатьох архітектурах комп'ютера.

одиниця інформації
байт
Система одиниць одиниці, отримані з біта
Одиниця цифрова інформація, розмір даних
Символ B або o (коли відповідає саме 8 бітам)

Байт у Вікісховищі?

Історично розмір байта залежав від апаратного забезпечення і не існувало жодних чітких стандартів, які б визначали його розмір, у минулому використовувалися байти розміром від 1[3] до 48[4] бітів[5][6]. Ранні системи кодування символів часто використовували шість бітів[en], а в 1960-х роках були поширеними пристрої, що оперували шестибітовими та дев'ятибітовими байтами. Ці пристрої найчастіше мали слова пам'яті розміром 12, 24, 36, 48 чи 60 бітів, які відповідали двом, чотирьом, шістьом, вісьмом чи 10 шестибітовим байтам. У ту епоху, до того як термін «байт» став загальним, байти в потоці інструкцій часто згадувалися як силаби[en] (англ. syllables, «склади»).

Сучасний де-факто стандарт байта розміром вісім бітів затверджений у стандарті ISO/IEC 2382-1:1993, він є зручним степенем двійки, який дає змогу одному байту містити значення від 0 до 255 (28 = 256 чисел, включно з нулем)[7]. Міжнародний стандарт IEC 80000-13 кодифікував це загальне визначення. Багато видів додатків використовує інформацію, представлену восьма чи менше бітами. Популярність основних комерційних обчислювальних архітектур сприяла повсюдному прийняттю восьмибітного розміру[8]. Сучасні архітектури зазвичай використовують 32- чи 64-бітні слова, які складаються з чотирьох чи восьми байтів відповідно.

Символьним позначенням байта є велика літра B латинського алфавіту, запропонована Міжнародною електротехнічною комісією (IEC) та Інститутом інженерів з електротехніки та електроніки (IEEE)[9] на противагу біту, IEEE-символом якого є мала літера b латинського алфавіту. Одиниця октет (символьне позначення o) прямо вказує на послідовність з восьми бітів, усуваючи таким чином неоднозначність стосовно розміру байта[10][11].

ІсторіяРедагувати

Термін байт придумав Вернер Бухгольз[en] у червні 1956 року[3][12][13], на ранній стадії розробки комп'ютера IBM Stretch[14][15][1][12][13][16][17][12]. Назва терміну байт (англ. byte) походить від англійського слова bite і була вибрана з метою уникнення випадкової плутанини з терміном біт (англ. bit)[1][12][18].

За іншою версією автором терміну байта як позначення груп бітів, менших розміром за машинні слова (зокрема для груп з чотирьох бітів) є Луї Дж. Дулі (англ. Louis G. Dooley), який стверджував, що придумав цей термін під час роботи з Жюлем Шварцем[en] (англ. Jules Schwartz) і Діком Білером (англ. Dick Beeler) над системою протиповітряної оборони під назвою SAGE[en] в Лабораторії Лінкольна близько 1956/1957 років, яка розроблювалася спільно компаніями RAND, MIT та IBM[19][20]. Пізніше в мові програмування JOVIAL, створеній командою на чолі зі Шварцем, використовувався цей термін, проте Шварц невпевнено згадував, що цей термін був запозичений із системи обробки даних AN/FSQ-31[en][21][20].

Ранні комп'ютери використовували різні чотирьохбітні двійково-десяткові (BCD) представлення і шестибітні коди для друку графічних шаблонів, які були розповсюдженими в Армії США (FIELDATA[en]) і ВМС США. Ці представлення включали буквено-цифрові символи та спеціальні графічні символи. Ці набори були розширені в 1963 році до системи із семи бітів кодування, яка отримала назву American Standard Code for Information Interchange (ASCII, Американський стандартний код для інформаційного обміну) і яка була прийнята як Федеральний стандарт обробки інформації, який замінив собою несумісні коди телепринтерів, що використовувалися різними філіями уряду США та університетів протягом 1960-х років. ASCII включав в себе літери алфавіту в нижньому та верхньому регістрі і набір керівних символів для полегшення передання письмової мови та таких функцій пристроїв друку як перехід на новий рядок, а також фізичний або логічний контроль над потоком даних через засоби передання даних[17]. На початку 1960-х років, водночас активно беручи участь у стандартизації ASCII, компанія IBM представила у своїй власній продуктовій лінії System/360 восьмибітовий «розширений двійково-десятковий код обміну інформацією» (англ. Extended Binary Coded Decimal Interchange Code, EBCDIC), розширення їхнього шестибітового двійково-десяткового коду (BCDIC), який використовувався в попередніх перфокартах[22]. Популярність серії System/360 призвела до повсюдного прийняття восьмибітного розміру пам'яті[17][15][12].

Для явного позначення восьми бітів використовується термін октет[17][11]. Історично для позначення восьми бітів у Західній Європі також використовувався термін октад (англ. octad, octade)[23][24].

ПрефіксиРедагувати

Кількість байтів
Десяткова система Префікси СІ Двійкові префікси МЕК
Назва Скорочення Степінь Назва Степінь Назва Скорочення Степінь
байт Б (B) 100 - 100 байт Б (B) 20
кілобайт кБ (kB) 103 кіло- 103 кібібайт КіБ (KiB) 210
мегабайт МБ (MB) 106 мега- 106 мебібайт МіБ (MiB) 220
гігабайт ГБ (GB) 109 гіга- 109 гібібайт ГіБ (GiB) 230
терабайт ТБ (TB) 1012 тера- 1012 тебібайт ТіБ (TiB) 240
петабайт ПБ (PB) 1015 пета- 1015 пебібайт[en] ПіБ (PiB) 250
ексабайт ЕБ (EB) 1018 екса- 1018 ексбібайт ЕіБ (EiB) 260
зетабайт ЗБ (ZB) 1021 зета- 1021 зебібайт[en] ЗіБ (ZiB) 270
йотабайт ЙБ (YB) 1024 йота- 1024 йобібайт ЙіБ (YiB) 280

Для вимірювання обсягу даних використовують похідні терміни, що утворюються додаванням префіксу (див. таблицю «Кількість байтів»).

Різниця між десятковим і двійковим представленням префіксівРедагувати

Іноді на практиці (переважно в сфері інтернет-послуг та виробництві накопичувачів інформації) через плутанину двійкових префіксів з десятковими відношення похідних одиниць до основної відрізняється від прийнятих в програмуванні, що призводить до похибок під час обчислення:

Префікс Десяткове значення Двійкове значення Похибка
к кіло 103   = 1000 210 = 1024 2.40 %
M мега 106   = 10002 220 = 10242 4.86 %
Г гіга 109   = 10003 230 = 10243 7.37 %
T тера 1012 = 10004 240 = 10244 9.95 %

Символьне позначення байтаРедагувати

У стандартах IEC 80000-13, IEEE 1541 та Метричному форматі обміну (англ. Metric Interchange Format)[9] у якості символьного позначення байта затверджена велика літра B латинського алфавіту. З іншого боку, стандарт IEEE 1541 визначає малу літеру b латинського алфавіту як символьне позначення біта, проте стандарт IEC 80000-13 та Метричний формат обміну застосовують слово bit для позначення біту.

ВикористанняРедагувати

Багато мов програмування мають тип даних byte.

Мови програмування C та C++ дають визначення типу даних byte як «одиниці адресації сховища даних, достатньо великій, щоб зберігати будь-який із символів базового набору символів середовища виконання» (пункт 3.6 стандарту C). Стандарт C вимагає, щоб цілочисельний тип даних unsigned char містив принаймні 256 різних значень, і був представленим принаймні вісьмома бітами (пункт 5.2.4.2.1). Різні реалізації C та C++ резервують 8, 9, 16, 32 чи 36 бітів для зберігання байта[25][26]. Крім того, стандарти C та C++ вимагають, щоб між двома байтами не було жодних «проміжків». Це означає, що кожен біт в пам'яті є частиною байта[27].

У мові програмування Java примітивний тип даних byte завжди визначається як такий, що містить 8 бітів і є знаковим типом даних, який може містити значення від −128 до 127.

Мови програмування .NET, як-от C#, визначають як беззнаковий тип даних byte, так і знаковий sbyte, які містять значення від 0 до 255 та від −128 до 127 відповідно.

У системах передавання даних дане визначення байта як нерозривної послідовності бітів в послідовному потоці даних, який являє собою найменшу відмітну одиницю даних. Одиниця передання може включати старт-біти, стоп-біти чи біти парності, і таким чином може варіюватися від 7 до 12 бітів, щоб містити один 7-бітний код ASCII[28].

Див. такожРедагувати

ПриміткиРедагувати

  1. а б в Blaauw, Gerrit Anne; Brooks, Jr., Frederick Phillips; Buchholz, Werner (1962). 4: Natural Data Units (PDF). У Buchholz, Werner. Planning a Computer System – Project Stretch. McGraw-Hill Book Company, Inc. / The Maple Press Company, York, PA. с. 39–40. LCCN 61-10466. Архів оригіналу за 2017-04-03. Процитовано 27.04.2019. 
  2. Bemer, Robert William (1959). A proposal for a generalized card code of 256 characters. Communications of the ACM 2 (9): 19–23. doi:10.1145/368424.368435. 
  3. а б Buchholz, Werner (1956-06-11). 7. The Shift Matrix. The Link System. IBM. с. 5–6. Stretch Memo No. 39G. Архів оригіналу за 2017-04-04. Процитовано 27.04.2019. 
  4. 3600 Computer System – Reference Manual. K. St. Paul, Minnesota, USA: Control Data Corporation (CDC). 1966-10-11 [1965]. 60021300. Архів оригіналу за 2017-04-05. Процитовано 27.04.2019.  (NB. Discusses 12-bit, 24-bit and 48-bit bytes.)
  5. Rao, Thammavaram R. N.; Fujiwara, Eiji (1989). У McCluskey, Edward J. Error-Control Coding for Computer Systems. Prentice Hall Series in Computer Enginering (вид. 1). Englewood Cliffs, NJ, USA: Prentice Hall. ISBN 0-13-283953-9. LCCN 88-17892.  (NB. Example of the usage of a code for «4-bit bytes».)
  6. Tafel, Hans Jörg (1971). Написано у RWTH, Aachen, Germany. Einführung in die digitale Datenverarbeitung [Introduction to digital information processing] (German). Munich, Germany: Carl Hanser Verlag. с. 300. ISBN 3-446-10569-7. 
  7. ISO/IEC 2382-1: 1993, Information technology – Vocabulary – Part 1: Fundamental terms. 1993. 
  8. Computer History Museum – Exhibits – Internet History – 1964: Internet History 1962 to 1992. Computer History Museum. 2017 [2015]. Архів оригіналу за 2017-04-03. Процитовано 27.04.2019. 
  9. а б Jaffer, Aubrey (2011) [2008]. Metric-Interchange-Format. Архів оригіналу за 2017-04-03. Процитовано 27.04.2019. 
  10. Kozierok, Charles M. (2005-09-20) [2001]. The TCP/IP Guide – Binary Information and Representation: Bits, Bytes, Nibbles, Octets and Characters – Byte versus Octet. 3.0. Архів оригіналу за 2017-04-03. Процитовано 27.04.2019. 
  11. а б ISO 2382-4, Organization of data (вид. 2). 
  12. а б в г д Buchholz, Werner (February 1977). The Word 'Byte' Comes of Age.... Byte Magazine 2 (2): 144. Архів оригіналу за 21 March 2019. Процитовано 27.04.2019. 
  13. а б Timeline of the IBM Stretch/Harvest era (1956–1961). Computer History Museum. June 1956. Архів оригіналу за 2016-04-29. Процитовано 27.04.2019. 
  14. Buchholz, Werner (1956-07-31). 5. Input-Output. Memory Word Length. IBM. с. 2. Stretch Memo No. 40. Архів оригіналу за 2017-04-04. Процитовано 27.04.2019. 
  15. а б Buchholz, Werner (1956-09-19). 2. Input-Output Byte Size. Memory Word Length and Indexing. IBM. с. 1. Stretch Memo No. 45. Архів оригіналу за 2017-04-04. Процитовано 27.04.2019. 
  16. Raymond, Eric Steven (2017) [2003]. byte definition. Архів оригіналу за 2017-04-03. Процитовано 27.04.2019. 
  17. а б в г Bemer, Robert William (2000-08-08). Why is a byte 8 bits? Or is it?. Computer History Vignettes. Архів оригіналу за 2017-04-03. Процитовано 27.04.2019. 
  18. Blaauw, Gerrit Anne; Brooks, Jr., Frederick Phillips; Buchholz, Werner (June 1959). Processing Data in Bits and Pieces. IRE Transactions on Electronic Computers: 121. 
  19. Dooley, Louis G. (February 1995). Byte: The Word. BYTE (Ocala, FL, USA). Архів оригіналу за 1996-12-20. 
  20. а б Ram, Stefan. Erklärung des Wortes "Byte" im Rahmen der Lehre binärer Codes (German). Berlin, Germany: Freie Universität Berlin. Процитовано 27.04.2019. 
  21. Origin of the term "byte", 1956. Архів оригіналу за 2017-04-10. Процитовано 27.04.2019. 
  22. IBM confirms the use of EBCDIC in their mainframes as a default practice. IBM. 2008. Архів оригіналу за 2013-01-03. Процитовано 27.04.2019. 
  23. Williams, R. H. (1969-01-01). British Commercial Computer Digest: Pergamon Computer Data Series. Pergamon Press. ISBN 1483122107. 978-1483122106. Архів оригіналу за 2015-10-01. Процитовано 27.04.2019. 
  24. Philips – Philips Data Systems' product range – April 1971. Philips. April 1971. Архів оригіналу за 2016-03-04. Процитовано 27.04.2019. 
  25. Cline, Marshall. I could imagine a machine with 9-bit bytes. But surely not 16-bit bytes or 32-bit bytes, right?. Архів оригіналу за 21 March 2019. Процитовано 27.04.2019. 
  26. Klein, Jack (2008). Integer Types in C and C++. Архів оригіналу за 2010-03-27. Процитовано 27.04.2019. 
  27. Cline, Marshall. C++ FAQ: the rules about bytes, chars, and characters. Архів оригіналу за 21 March 2019. Процитовано 27.04.2019. 
  28. External Interfaces/API. Northwestern University. Архів оригіналу за 9 August 2018. Процитовано 27.04.2019. 

ЛітератураРедагувати