Байт

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти к навигации Перейти к поиску

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

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

Історія

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

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

Ранні комп'ютери використовували різні чотирьохбітні двійково-десяткові (BCD) представлення і шестибітні коди для друку графічних шаблонів, які були розповсюдженими в Армії США (Шаблон:Нп) і ВМС США. Ці представлення включали буквено-цифрові символи та спеціальні графічні символи. Ці набори були розширені в 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 Шаблон:Нп ПіБ (PiB) 250
ексабайт ЕБ (EB) 1018 екса- 1018 ексбібайт ЕіБ (EiB) 260
зетабайт ЗБ (ZB) 1021 зета- 1021 Шаблон:Нп ЗіБ (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. а б в Шаблон:Cite
  2. Шаблон:Cite
  3. а б Ошибка Lua: не удаётся создать процесс: proc_open(/var/log/nginx/wikiinfo_lua.error.log): failed to open stream: Permission denied
  4. Ошибка Lua: не удаётся создать процесс: proc_open(/var/log/nginx/wikiinfo_lua.error.log): failed to open stream: Permission denied (NB. Discusses 12-bit, 24-bit and 48-bit bytes.)
  5. Ошибка Lua: не удаётся создать процесс: proc_open(/var/log/nginx/wikiinfo_lua.error.log): failed to open stream: Permission denied (NB. Example of the usage of a code for «4-bit bytes».)
  6. Ошибка Lua: не удаётся создать процесс: proc_open(/var/log/nginx/wikiinfo_lua.error.log): failed to open stream: Permission denied
  7. Ошибка Lua: не удаётся создать процесс: proc_open(/var/log/nginx/wikiinfo_lua.error.log): failed to open stream: Permission denied
  8. Ошибка Lua: не удаётся создать процесс: proc_open(/var/log/nginx/wikiinfo_lua.error.log): failed to open stream: Permission denied
  9. а б Ошибка Lua: не удаётся создать процесс: proc_open(/var/log/nginx/wikiinfo_lua.error.log): failed to open stream: Permission denied
  10. Ошибка Lua: не удаётся создать процесс: proc_open(/var/log/nginx/wikiinfo_lua.error.log): failed to open stream: Permission denied
  11. а б Ошибка Lua: не удаётся создать процесс: proc_open(/var/log/nginx/wikiinfo_lua.error.log): failed to open stream: Permission denied
  12. а б в г д Ошибка Lua: не удаётся создать процесс: proc_open(/var/log/nginx/wikiinfo_lua.error.log): failed to open stream: Permission denied
  13. а б Ошибка Lua: не удаётся создать процесс: proc_open(/var/log/nginx/wikiinfo_lua.error.log): failed to open stream: Permission denied
  14. Ошибка Lua: не удаётся создать процесс: proc_open(/var/log/nginx/wikiinfo_lua.error.log): failed to open stream: Permission denied
  15. а б Ошибка Lua: не удаётся создать процесс: proc_open(/var/log/nginx/wikiinfo_lua.error.log): failed to open stream: Permission denied
  16. Ошибка Lua: не удаётся создать процесс: proc_open(/var/log/nginx/wikiinfo_lua.error.log): failed to open stream: Permission denied
  17. а б в г Ошибка Lua: не удаётся создать процесс: proc_open(/var/log/nginx/wikiinfo_lua.error.log): failed to open stream: Permission denied
  18. Ошибка Lua: не удаётся создать процесс: proc_open(/var/log/nginx/wikiinfo_lua.error.log): failed to open stream: Permission denied
  19. Ошибка Lua: не удаётся создать процесс: proc_open(/var/log/nginx/wikiinfo_lua.error.log): failed to open stream: Permission denied
  20. а б Ошибка Lua: не удаётся создать процесс: proc_open(/var/log/nginx/wikiinfo_lua.error.log): failed to open stream: Permission denied
  21. Шаблон:Cite
  22. Ошибка Lua: не удаётся создать процесс: proc_open(/var/log/nginx/wikiinfo_lua.error.log): failed to open stream: Permission denied
  23. Ошибка Lua: не удаётся создать процесс: proc_open(/var/log/nginx/wikiinfo_lua.error.log): failed to open stream: Permission denied
  24. Ошибка Lua: не удаётся создать процесс: proc_open(/var/log/nginx/wikiinfo_lua.error.log): failed to open stream: Permission denied
  25. Ошибка Lua: не удаётся создать процесс: proc_open(/var/log/nginx/wikiinfo_lua.error.log): failed to open stream: Permission denied
  26. Шаблон:Citation
  27. Ошибка Lua: не удаётся создать процесс: proc_open(/var/log/nginx/wikiinfo_lua.error.log): failed to open stream: Permission denied
  28. Ошибка Lua: не удаётся создать процесс: proc_open(/var/log/nginx/wikiinfo_lua.error.log): failed to open stream: Permission denied

Література

  • Ошибка Lua: не удаётся создать процесс: proc_open(/var/log/nginx/wikiinfo_lua.error.log): failed to open stream: Permission denied

Шаблон:Одиниці виміру інформації Шаблон:Типи даних Шаблон:ВП-портали

Категорія:Одиниці інформації Категорія:Кодування символів Категорія:Одиниці даних Категорія:Комп'ютерна термінологія