Байт

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

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

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

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

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

Ранні комп'ютери використовували різні 4-бітні двійково-десяткові (BCD) представлення і 6-бітні коди для друку графічних шаблонів, які були розповсюдженими в Армії США (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), розширення їхнього 6-бітового двійково-десяткового коду (BCDIC), який використовувався в попередніх перфокартах[22]. Популярність серії System/360 призвела до повсюдного прийняття 8-бітного розміру пам'яті[17][15][12].

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

Префікси[ред. | ред. код]

Кількість байтів
Десяткова система Префікси SI Двійкові префікси МЕК
Назва Скорочення Степінь Назва Степінь Назва Скорочення Степінь
байт Б (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 пебібайт ПіБ (PiB) 250
ексабайт ЕБ (EB) 1018 екса- 1018 ексбібайт ЕіБ (EiB) 260
зетабайт ЗБ (ZB) 1021 зета- 1021 зебібайт ЗіБ (ZiB) 270
йотабайт ЙБ (YB) 1024 йота- 1024 йобібайт ЙіБ (YiB) 280
ронабайт РБ (RB) 1027 рона- 1027
кветабайт (QB) 1030 квета- 1030

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

Різниця між десятковим і двійковим представленням префіксів[ред. | ред. код]

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

Префікс Десяткове значення Двійкове значення Похибка
к кіло 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, у Buchholz, Werner (ред.), Planning a Computer System – Project Stretch (PDF), McGraw-Hill Book Company, Inc. / The Maple Press Company, York, PA., с. 39—40, LCCN 61-10466, архів оригіналу (PDF) за 3 квітня 2017, процитовано 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 (11 червня 1956). 7. The Shift Matrix. The Link System (PDF). IBM. с. 5—6. Stretch Memo No. 39G. Архів оригіналу (PDF) за 4 квітня 2017. Процитовано 27.04.2019.
  4. 3600 Computer System – Reference Manual (PDF). K. St. Paul, Minnesota, USA: Control Data Corporation (CDC). 11 жовтня 1966 [1965]. 60021300. Архів оригіналу (PDF) за 5 квітня 2017. Процитовано 27.04.2019. {{cite book}}: Cite має пустий невідомий параметр: |df= (довідка) (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]. Архів оригіналу за 3 квітня 2017. Процитовано 27.04.2019.
  9. а б Jaffer, Aubrey (2011) [2008]. Metric-Interchange-Format. Архів оригіналу за 3 квітня 2017. Процитовано 27.04.2019.
  10. Kozierok, Charles M. (20 вересня 2005) [2001]. The TCP/IP Guide – Binary Information and Representation: Bits, Bytes, Nibbles, Octets and Characters – Byte versus Octet. 3.0. Архів оригіналу за 3 квітня 2017. Процитовано 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. Архів оригіналу за 29 квітня 2016. Процитовано 27.04.2019.
  14. Buchholz, Werner (31 липня 1956). 5. Input-Output. Memory Word Length (PDF). IBM. с. 2. Stretch Memo No. 40. Архів оригіналу (PDF) за 4 квітня 2017. Процитовано 27.04.2019.
  15. а б Buchholz, Werner (19 вересня 1956). 2. Input-Output Byte Size. Memory Word Length and Indexing (PDF). IBM. с. 1. Stretch Memo No. 45. Архів оригіналу (PDF) за 4 квітня 2017. Процитовано 27.04.2019.
  16. Raymond, Eric Steven (2017) [2003]. byte definition. Архів оригіналу за 3 квітня 2017. Процитовано 27.04.2019.
  17. а б в г Bemer, Robert William (8 серпня 2000). Why is a byte 8 bits? Or is it?. Computer History Vignettes. Архів оригіналу за 3 квітня 2017. Процитовано 27.04.2019. {{cite web}}: Cite має пустий невідомий параметр: |df= (довідка)
  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. Архів оригіналу за 20 грудня 1996.
  20. а б Ram, Stefan. Erklärung des Wortes "Byte" im Rahmen der Lehre binärer Codes (German) . Berlin, Germany: Freie Universität Berlin. Архів оригіналу за 10 червня 2021. Процитовано 27.04.2019.
  21. Origin of the term "byte", 1956, архів оригіналу за 10 квітня 2017, процитовано 27.04.2019
  22. IBM confirms the use of EBCDIC in their mainframes as a default practice. IBM. 2008. Архів оригіналу за 3 січня 2013. Процитовано 27.04.2019.
  23. Williams, R. H. (1 січня 1969). British Commercial Computer Digest: Pergamon Computer Data Series. Pergamon Press. ISBN 1483122107. 978-1483122106. Архів оригіналу за 1 жовтня 2015. Процитовано 27.04.2019.
  24. Philips – Philips Data Systems' product range – April 1971 (PDF). Philips. April 1971. Архів оригіналу (PDF) за 4 березня 2016. Процитовано 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++, архів оригіналу за 27 березня 2010, процитовано 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.

Література[ред. | ред. код]