Українська математична енциклопедія
Двійкові коди

Двійковий код (бінарний код) - це представлення інформації у двійковій системі числення (тобто за допомогою послідовності нулів та одиниць). Як правило, під виразом "двійковий код" мають на увазі інструкції для мікропроцесора, хоча у бінарному вигляді можуть бути зображені будь-які дані. Двійковий формат також застосовується для збережння даних у пам'яті комп'тера та для передачі даних. Як правило, кожен символ (нуль або одиниця) називають бітом, а послідовність із восьми бітів - байтом. Таким чином за допомогою одного байту можна закодувати \(2^8 = 256\) різних символів. Як правило, двійковий код нечитабельний. Однак у деяких застосуваннях, таких як зворотній інжиніринг (reverse engineering) може виникати така необхідність. У цьому разі для читання двійкового коду використовують спеціальні редактори. Оскільки працювати з довгою послідовністю нулів та одиниць дуже незручно, такі редактори відображають інформацію у вигляді байтів, кожен з яких зображують у вигляді двох символів із системи числення з основною 16 (тобто \(0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F\)). Наприклад, число \(142\) матиме вигляд \(8E\) (що відповідає двійковому \(10001110\)).

Застосування. Двійковий код має два принципових застосування - кодування інструкцій для мікропроцесора та збереження/передача даних у пам'яті комп'ютера. Мікропроцесори представляють собою складні мікросхеми, що складаються з великої кількості транзисторів. Кожен транзистор може перебувати в одному із двох станів (включений/виключений). Таким чином, мікропроцесор виконує обчислення змінюючи стани своїх транзисторів, перетворюючи вхідний сигнал (що вмикає або вимикає певні транзистори) на вихідний (результуючий стан вихідних транзисторів). Така архітектура передбачає подання інструкцій у двійковому вигляді, і тому будь-яка комп'ютерна програма перетворюється на подібний двійковий код який може бути виконано мікропроцесором. Такий двійковий код ще називають машинним кодом. Процес перетворення комп'ютерної програми на машинний код називається компіляцією. Для прикладу, програма написана мовою програмування C або C++ повинна бути скомпільована перед запуском. У той же час цілий ряд сучасних мов програмування дозволяє перетворювати код програми у машинний код безпосередньо, без проміжного етапу компіляції. Цей процес називається інтерпретацією (за таким приципом працює мова програмування PHP).

Що стосується зберження та передачі даних, то використання двійкових даних зумовлено фізичними особливостями носіїв, або телекомунікаційних каналів.

Історія. Вважається, що сучасна двійкова система була винайдена німецьким науковцем Готфрідом Лейбніцем (Gottfried Leibniz) (див. [1]). Визначальний внесок в побудову математичної основи для операцій з двійковими даними здійснив британський математик Джордж Буль (George Boole) (див. [2]). Його іменем було названо відповідний розділ математики - булева алгебра. Використання булевої алгебри для побудови електричних схем було запропоновано Клодом Шенноном (Claude Shannon) (див. [3]), одним із засновників теорії інформації.

Приклади.

1. Для того щоб зобразити натуральне число у двійковому вигляді необхідно представити його у вигляді суми: \( n = x_0 2^0 + x_1 2^1 + x_2 2^2 +\ldots + x_m 2^m, \) коефіцієнти \(x_i \in \{0,1\}\) утворюватимуть запис числа \(n\) у двійковому вигляді. Наприклад \[ 83 = 1\cdot 2^0 + 1 \cdot 2^1 + 0\cdot 2^2 + 0\cdot 2^3 + 1\cdot 2^4 + 0\cdot 2^5 +1\cdot 2^6, \] таким чином у двійковому форматі: \[ 83 = 1010011. \] Аналогічним чином здійснюється переведення з двійкової системи у десяткову. Так, байт \(01011101\) кодує число \(2^0 + 2^2 + 2^3 + 2^4 + 2^6 = 93\).

2. Для кодування текстової інформації у двійковому вигляді часто використовують спеціальні таблиці кодувань. Найвідомішою такою таблицею є ASCII (American Standard Code for Information Interchang), яка кодує \(128\) символів. Так, малій латинській букві "a" відповідає число \(97\) або бінарне зображення \(01100001\). Таким чином, ASCII кодує один символ одним байтом, у якого старший розряд завжди дорівнює нулю.

Список посилань

  1. Leinbiz G., Explication de l'Arithmétique Binaire, Die Mathematische Schriften, 1879, ed. C. Gerhardt, Berlin.
  2. Boole G., Explication de l'Arithmétique Binaire, The mathematical analysis of logic, 1847, Cambridge.
  3. Shannon C. E., A symbolic analysis of relay and switching circuits, Transactions of the American Institute of Electrical Engineers, 1938, vol. 57, no. 12.