Біт
Біт (англ. bit, переклад: шматочок) — мінімальна одиниця кількості інформації, яка дорівнює одному двійковому розряду, який може бути рівним одному з двох значень/станів (0 або 1), застосовуваних для представлення даних у двійковій системі числення. Англійською двійковий знак звучить як binary digit. Скорочено виходить bit (біт). Число бітів пам'яті ЕОМ визначається максимальною кількістю двійкових цифр, які в ній вміщуються. Число бітів даних — це кількість двійкових розрядів, в яких вони записані. Біт може бути інтерпретований як логічне значення (істина/хиба), знак числа (+/-), стан тригера (ввімкнено/вимкнено) тощо. Яке саме значення інтерпретувати як 1, а яке — як 0 — результат домовленості, й іноді навіть в одній програмі деяке значення може інтерпретуватися по різному. У теорії інформації бітом називається змінна, що може з однаковою ймовірністю приймати значення 1 або 0, або кількість інформації, що отримується, коли значення такої змінної стає відомим[1]. У квантових комп'ютерах, квантова система, що може існувати як суперпозиція звичайних бітів, називається кубітом. ІсторіяУ роботі Лейбніца «Explanation of binary arithmetic» 1703 року була представлена двійкова система обчислення і правила роботи з нею[2]. У цій роботі Лейбніц посилався на китайського філософа Фу-сі, що за легендою, винайшов триграми. Кодування даних з допомогою бітів вперше було використане у ткацьких верстатах Бушона і Фалькона у 1720-х роках і було реалізовано у формі картонок з отворами[3][4]. Надалі ця технологія розвивалася і була адаптована не тільки для верстатів, але і для інших пристроїв. Їх використовували у своїх механізмах Жаккар, Корсаков, Беббідж, Голлеріт, і, урешті-решт, такі картонки стали дуже вживаними у формі перфокарт, які використовували до 1980-х років. Також розвитком ідеї перфокарти стали перфострічки, які використовували для запису великої кількості інформації. Всі ці носії даних концептуально мають схожу будову — це масив бітів (позицій на папері), кожен з яких заповнюється окремо, і може приймати значення 1 або 0 (проколото/не проколото). Сучасними нащадками цих носіїв даних можна вважати штрих-коди і QR-коди. Іншим способом використання двійкового кодування була азбука Морзе, запропонована Семюелем Морзе 1838 року, де символам були поставлені у відповідність набори різної довжини, які складалися з точок і тире. Перші програмовані комп'ютери, розроблені Конрадом Цузе у період з 1934 по 1943 рік (це обчислювальні машини Z1, Z2, Z3 і Z4), зберігали і оброблювали дані саме в бітовому вигляді. Сам Цузе називав біт «так/ні статусом»[5][6]. Термін «біт» був запропонований Клодом Шенноном у 1948 році в роботі «Математична теорія зв'язку». Сам Шеннон приписував цей термін Джону Тьюкі, який придумав його під час роботи у Bell Labs, 9 січня 1947 року, скоротивши словосполучення «binary digit» до простого «bit». Цікаво, що ще у 1936 році Веннівер Буш писав про шматочки (англ. bits) інформації, що можуть розміщуватися на перфокарті[7]. Проте, комп'ютери до 1950-х років продовжували використовувати складні пристрої (декатрони), для зберігання і оперування інформацією у десятковому вигляді[8], і тільки після появи транзисторів двійкова система закріпилася як стандарт де-факто. Фізична реалізаціяЗберігання інформації У сучасних електронних носіях інформації вона, фактично, завжди зберігається у бітовій формі, хоча, нерідко, передається більшими блоками. Практично, один біт може бути представлений різними способами: перемикачем або тригер, двома різними рівнями напруги на електричному колі, двома різними рівнями освітленості, різними напрямками магнітних моментів (у тому числі, спінів) або поляризації, зарядом на конденсаторі й багатьма іншими. З точки зору надійності, найчастіше використовують два типи реалізації біта — однофазний і двофазний. Однофазна реалізація передбачає 1 вихід, наявність на якому сигналу інтерпретується як 1. Двофазна реалізація має два виходи — при цьому, одиницею вважається активність на першому виході, і її відсутність на другому, а нулем — навпаки, активність лише на другому. При цьому, якщо обидва виходи є активними або неактивними, то сигнал вважається помилковим. Такі реалізації дорожчі, але значно надійніші. Передача інформації Для передачі даних дворівневі системи є менш зручними, бо при наявності хоча б невеликої десинхронізації передавача і приймача система може збитися, коли передається достатньо довгий послідовний ряд одиниць або нулів. Наприклад, ряд з 50 нулів може бути прийнятий за ряд з 51 нуля, якщо електромагнітні завади, що діють на лінію, призводять до деформації сигналу більш ніж на 2 %[9], тому для них використовують складніше кодування, наприклад, одиниця виражається сигналом деякої форми, а нуль — сигналом іншої форми. Такі коди називають кодами з самосинхронізацією. Прикладом такого кодування є манчестерський код. Теорія інформаціїУ теорії інформації, кількість інформації тісно пов'язана з поняттям інформаційної ентропії. Загалом можна сказати, що якщо в нас є деяка система, що може приймати різні значення 1, 2, …, n, з імовірностями , то загальна кількість інформації, яку можна передати за допомогою такої системи, дорівнює
У випадку, якщо всі ймовірності є рівними (наприклад, для алфавіту, всі літери в повідомленнях, написаних на якому, зустрічаються з рівною частотою), для обчислення можна використати Формулу Гартлі: де:
Наприклад, у ДНК, алфавіт якої складається з чотирьох літер-нуклеотидів, кожна з них несе у собі log2 4 = 2 біти інформації[10]. Іноді для вимірювання інформаційної ентропії замість біта використовують еквівалентна йому одиниця шеннон. Біти у програмуванніБітові масивиХоча зазвичай інформація у пам'яті комп'ютера зберігається у вигляді байтів, у деяких випадках зручніше зберігати її безпосередньо у вигляді бітового масива. Такі масиви використовують у файлових системах, для відслідковування зайнятих кластерів пам'яті, у фільтрі Блума, у деяких реалізаціях або для максимально компактної архівації даних, усюди, де це важливо. Для деяких шахматних програм, зокрема таких сильних, як Houdini і Stockfish, для представлення шахівниці використовують спеціальну структуру даних, що називається Bitboard (тобто, бітова дошка). У мовах програмування, тип даних для збереження бітових масивів називається бітовим полем. Бітові операціїУ програмуванні бітовими називаються операції, що проводяться над ланцюжками бітів. Зазвичай це можуть бути логічні операції, або зсуви. У випадку логічних операцій, для двох масивів бітів однакової довжини (або одного масиву, якщо операція унарна, як «НЕ»), деяка операція застосовується до кожної послідовної пари бітів, і результат записується у відповідне поле масиву-відповіді. Наприклад:
Бітовий зсув — операція, під час якої всі біти масиву зміщуються на одну позицію (ближче до початку або кінця масиву, залежно від того, чи це зсув вліво або вправо), а біт, що стоїть із самого краю, або переміщується на інший край, якщо це циклічний зсув, або втрачається. Арифметико-логічний пристрій процесора — найбільш низькорівневий апарат для обчислень, зазвичай окрім найпростіших арифметичних операцій вміє робити саме побітові операції. Спеціальні бітиСлужбові бітиІноді при передаванні або зберіганні інформації, до бітів, кодуючих дані додаються біти, що несуть інформацію про сам канал зв'язку або призначені для синхронізації даних. При передаванні в таких бітах може передаватися інформація щодо рівня інтерференції, потужності передавача, або інших умов, що не стосуються безпосередньо даних що передаються[11]. Такі біти називають службовими. Прикладом службових бітів, призначених для синхронізації, є описані нижче стартовий та стоповий біти. Пропускна здатність каналу, з урахуванням службової інформації вимірюється в бодах. Біти парностіДля перевірки цілісності даних, в кінець кожного байта даних може додаватись біт, що позначає, чи є кількість одиниць в бітовому записі числа парною. Таким чином, біт парності є простою реалізацією контрольної суми. Завдяки такому біту, якщо при передачі один біт буде пошкоджено або змінено, це буде одразу помічено. Просунутішими варіантами, що використовують більшу кількість додаткових бітів є код Гемінга або Код Ріда — Соломона, що дозволяють не тільки помічати, а й виправляти поодинокі помилки[12]. Стартовий та стоповий бітСтартовий та стоповий службові біти використовують в асинхронному послідовному зв'язку для того, щоб система могла розуміти, де закінчується один байт і починається інший. Наприклад, якщо при відсутності даних сигнал в послідовному кабелі виглядає як ряд одиниць, то перед початком передавання власне даних передавач спершу передає один символ «0». Цей біт є для приймача сигналом, що з наступного біту починається передача даних, початок стартового біту також синхронізує внутрішні тактові генератори передавача і приймача, що зменшує вплив розсинхронізації[13]. Кратні та некратні одиниці
Існує плутанина, пов'язана з кратними приставками (кіло-, мега-, гіга- і т. д.), через те, що різні стандарти по різному встановлюють їхнє значення для одиниць вимірювання інформації. У 1999 році Міжнародна електротехнічна комісія постановила розуміти ці приставки як десяткові, тобто 1 кілобіт = 1000 біт, а для одиниць, заснованих на ступенях двійки запропонувала нові назви — кібібіт, мебібіт, гібібіт і т. д. як вказано таблиці: Практично всі офіційні стандарти користуються цим визначенням, наприклад, максимальна пропускна здатність Ethernet специфікації 10BASE5 дорівнює 10×106 біт/с. Так само вказується пропускна здатність на старих модемах. З іншого боку, стандарти JEDEC визначають приставки кіло-, мега- і більші, як ступені двійки — тобто 1 кілобіт є рівним 1024 бітам. Через це деякі провайдери і програми використовують саме такий спосіб підрахунку. Відносна різниця між цими двома підходами зростає для більших одиниць — вона дорівнює 2 % для кілобайту, але вже 7 % для гігабайту. Також варто зазначити, що в будь-якому з варіантів біт не скорочується, тобто записати кілобіт як кб — не можна. Зазвичай у бітах(в секунду) вимірюється швидкість передачі даних або бітрейт мультимедіа файлів (кількість біт, які використовують для запису однієї секунди аудіо або відео), тоді як ємність пам'яті комп'ютера і розміри файлів частіше вимірюються у байтах (а також кіло-, мега- і гігабайтах). Рідше можуть використовувати нібл — половину байта, тобто 4 біти. З іншого боку, якщо алфавіт, у вигляді якого представлена інформація, має більш ніж два символи, то її більш зручно вимірювати в інших величинах, що не кратні біту. Деякі з них мають свої назви — це тріт, що може приймати три значення, і децит — може мати десять значень (наприклад, одна цифра в десятковому записі числа, несе в собі один децит інформації). Натуральною ж одиницею вимірювання інформації є нат, що є кількістю інформації, що отримується, коли відбувається подія, ймовірність якої 1/е. Чисельно ці одиниці дорівнюють:
У комп'ютерах інформація зазвичай зберігається у вигляді машинних слів, розмір яких залежить від розрядності регістрів процесора і шини даних. Довжина машинного слова може коливатись від 4 до 64 бітів для різних систем і платформ, але для кожної конкретної машини «машинне слово» є сталою величиною. Для 32-бітних процесорів архітектури x86, машинним словом традиційно вважається 16-біт, хоча в реальності воно дорівнює 32 бітам. ПозначенняЗгідно класифікатора системи позначень Державного комітету стандартизації, метрології і сертифікації України, біт позначається просто словом біт, тобто, не скорочується[14]. Кілобіт і мегабіт скорочуються до кбіт і Мбіт. В англійській мові біт зазвичай теж не скорочується (рекомендовано стандартом IEC 80000-13:2008). Проте стандарт IEEE 1541—2002 рекомендує скорочувати його до b. Зв'язок з іншими фізичними величинамиЗгідно з принципом Ландауера, стирання одного біта інформації, незалежно від способу його зберігання, супроводжується виділенням 2,7×10−21 Дж тепла. Ліміт Бекенштейна визначає, яка максимальна кількість інформації може бути збережена у фіксованому об'ємі простору, й дорівнює 2,6×1043mR біт, де R — радіус сфери, що включає в себе систему, а m — маса системи. Цей ліміт чисельно дорівнює ентропії чорної діри відповідних розмірів[15]. Ліміт Бремерманна визначає максимальну швидкість, з якою деяка система може вести обчислення. Він дорівнює c2/h ≈ 1,36 × 1050 біт/с на кілограм маси системи[16]. Примітки
Джерела
|