Двійкове кодування

Загальні відомості про системи числення
Якщо вам на уроці пропонують записати будь-яке число, ви не замислю­ючись, зображаєте його за допомогою арабських цифр: 0, 1, 2,.. 9. Ці цифри утворюють десяткову систему числення, і саме в ній викладається шкільна арифметика.
Система числення - це позначення чисел і прийоми роботи з ними. Мінімальний набір знаків, якими позначається число, називається алфавітом. Кількість знаків у алфавіті називається основою си­стеми числення.
Отже, у десятковій системі алфавіт утворений цифрами 0, 1, 2,.. 9, а основа дорівнює 10. З нею пов'язана назва системи.
Зауважимо, що системи числення, незважаючи на свою простоту та при­родність, є результатом тривалої еволюції. Десяткова система виникла в ре­зультаті обчислень за допомогою пальців. З'явилася вона в Індії у V столітті та була викладена арабською мовою у рукописах, датованих IX століттям. Тому цифри цієї системи називаються арабськими.
Давні шумери, які жили у Південному Дворіччі в III тисячолітті до нашої ери, застосовували систему, алфавіт якої складався з шістдесяти цифр. За допомогою цієї системи можна було пронумерувати секунди у хвилинах, а хвилини - у годинах. Крім поділу часу на години, шумери запровадили поділ кутів на градуси, мінути і секунди. Один кутовий градус містить 60 мінут, тобто 1° (градус) = 60’ (мінут) і 1’ = 60’’ (секунд). Така система називається шістдесятковою.
Двійкове числення не таке давнє, як десяткове або шістдесяткове: воно було запропоноване у XVII ст. Готфрідом Лейбніцем. Алфавіт двійкової системи складається лише з двох цифр - 0 і 1. В інформатиці, крім двійкової системи, часто застосовується шістнадцяткова (основа дорівнює 16).
Запис чисел у двійковій системі
Розглянемо структуру звичних для вас десяткових чисел. У десятковій си­стемі числення число можна подати як суму внесків розрядів: одиниць (10°), десятків (101), сотень (102) тощо. Наприклад, число 888 записується як сума:
888 = 8*100 + 8*10 + 8*1 = 8*102 + 8*101 + 8*100
Аналогічно зображається число і у двійковій системі, із тією відмінністю, що в цій системі числа виражаються тільки за допомогою двох цифр: 0 і 1, а основою системи є 2. Наприклад, число 5 записується так:
5 = 1*22 + 0*21 + 1*20
Зобразимо у двійковій системі перші числа натурального ряду:
0 = (0)2
1 = (1)2
2 = (10)2
3 = (11)2
4 = (100)2
Тут двійкові числа позначені у круглих дужках з індексом 2 для того, щоб відрізнити їх від десяткових чисел. Перші дві цифри (0 і 1) у двійковій системі мають такий самий вигляд, як і в десятковій, тому що записуються за допо­могою одного розряду. При переході до третьої цифри ("двійки") у двійковій системі потрібен ще один розряд, бо молодший розряд уже заповнений. До нового розряду записуємо 1, а у молодшому розряді лишається 0: (10)2 = 2. Далі запов­нюємо молодший розряд і отримуємо (11)2 = 3. Для запису наступної цифри потрібно розкривати новий розряд, тому що наявні вже заповнені. До нового розряду записуємо 1, а молодші розряди "зануляємо". В результаті отримуємо: (100)2 = 4. Представлення наступних цифр (5, 6, 7) виконуємо послідовним заповненням двох перших розрядів за принципом зворотного "старшинства": спочатку заповнюється молодший розряд, а потім - старший. Коли заповнено всі три розряди, відкриваємо новий, і т.д. За допомогою чотирьох двійкових роз­рядів ми зможемо записати не лише алфавіт арабських цифр, а й дійти до числа 15, яке має вигляд (1111)2.
Будь-яке двійкове число, як і десяткове, можна записати у вигляді суми степенів основи, наприклад,
(110110)2 = 1*25 + 1*24 + 0*23 + 1*22 + 1*21 + 0*1
Цьому числу відповідає десяткове число 54. Отже, запис числа у двійковій системі набагато довший, ніж у десятковій. Наприклад, для числа 54 досить лише двох десяткових розрядів, тоді як у двійковій - шість.
Незважаючи на високу розрядність двійкових чисел, саме двійкова система стала основою побудови обчислювальних машин, тому що електронні елементи (тригери), які застосовуються в обчислювальній апаратурі, відтворюють і роз­пізнають лише два стани - 0 і 1. Для сучасних комп'ютерів, які можуть за один такт роботи опрацьовувати до 64 розрядів, висока розрядність не проблема.
Виникає запитання: скільки чисел можна записати за допомогою n бітів, тобто n-розрядних двійкових чисел? Відповідь отримати неважко, якщо порівняти двійкову систему з десятковою. У десятковій системі за допомогою двох розрядів можна записати 100 (=10*10) чисел від 0 до 99. Трьома розрядами можна подати вже 1000 (=10*10*10) чисел. Отже, кількість чисел, які можна подати n розрядами, дорівнює аn, тобто n-му степеню основи а. Для двійкової си­стеми кількість чисел, що записуються за допомогою n бітів, дорівнюватиме 2n.

Двійкова арифметика
Розглянемо правила виконання арифметичних дій з двійковими числами. Для їхнього додавання та множення застосовують такі таблиці:
Якщо додаєте 1 + 1, відбувається перенесення одиниці до старшого розряду, як для десяткових чисел. Як приклад додамо два двійкових числа, однак, на відміну від ЕОМ, скористаємося записом у стовпчик, причому праворуч наве­демо звичайний запис у десятковому коді:
Множення двійкових чисел не складніше (а, може, й простіше), ніж у десят­ковій системі. Наприклад:
Нарешті, двійкові числа можна ділити одне на інше. Цю операцію краще виконати звичним способом - "куточком". Почнемо з найпростішого: розділимо 101 на 100, тобто 5 на 4:
Уся операція виконується так само, як і для десяткових чисел. Знаходимо найбільший дільник у старшому розряді (його записуємо під знаком куточка) і залишок (він записується під рискою).
Розглянемо складніший приклад. Знайдемо результат ділення 1101000 на 101:
У наведеному прикладі переведіть двійкові числа у десяткові та визначте, для яких чисел виконувалося ділення та який отримано результат.
Вісімкові й шістнадцяткові числа
Двійкова система числення призводить до довгого запису чисел, який важко сприймається під час читання з паперу або екрана монітора. Тому в інформатиці часто використовують ще дві системи для компактнішого запису чисел. Це вісімкова і шістнадцяткова системи числення, які зручніші від двійкової для запису чисел на папері або введення з клавіатури. Ці системи є допоміжними, тому що комп'ютер "знає" лише двійкову систему.
Вісімкові числа записують за допомогою алфавіту 0, 1,...7, тоді як алфавіт шістнадцяткової системи числення складається з арабських цифр і перших літер латинського алфавіту:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, В, С, D, E, F
Основи цих двох систем є степенями числа 2 (8 = 23 і 16 = 24), тому двійкові числа зручно записувати у цих системах. Так, для переведення цілого двійкового числа до вісімкової системи розбиваємо його на групи справа наліво по три цифри у кожній, наприклад:
1101011 = 1 101 011
Кожну трійку цифр (вони називаються двійковими тріадами) подамо як вісімкове число:
1101011 = 1 101 011 = (153)8
Якщо потрібно перетворити вісімкове число на двійкове, то навпаки, замість кожної вісімкової цифри запишемо групу з трьох двійкових чисел - тріаду.
До шістнадцяткової системи двійкові числа переводяться аналогічно. Відмінність лише в тому, що двійковий код розбивається на групи не з трьох, а з чотирьох цифр (двійкові тетради), наприклад:
11010101110 = 110 1010 1110 = (6АЕ)16
Шістнадцяткові числа позначають літерою Н у кінці числа, наприклад
(6АЕ)16 = 6АЕН.
Числа, подані у вісімковій системі, майже такі самі компактні, як і десяткові, а у шістнадцятковій - компактніші від десяткових. За допомогою вісімкового коду, що складається з n розрядів, можна записати 8n чисел, а за допомогою шістнадцяткового коду – 16n чисел.
Відповідність різних систем числення
На завершення наведемо таблиці відповідності чисел від 0 до 15 у десятковій, двійковій, вісімковій і щістнадцятковій системах.
Числа від 0 до 15 в різних системах числення
Десяткова
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Шістнадцяткова
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
Вісімкова
0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17
Двійкова
0
1
10
11
100
101
110
111
1000
1001
1010
1011
1100
1101
1110
1111
Зверніть увагу на те, що чим більша основа системи числення, тим коротший код числа. Наприклад, число 14 у двійковій системі записується чотирма розрядами, а у шістнадцятковій системі для цього потрібен лише один.


Вправи
1.  Запишіть як суму за розрядами число (35677)10.
2.  Подайте числа (111)2, (111)8 як суму внесків від кожного розряду й скажіть, чому дорівнюють ці числа у десятковій системі.
3.  Перетворіть у двійкову систему десяткові числа 11, 27, 96.
4.  Знайдіть суму чисел 101011 і 1101.
5.  Виконайте множення у двійковому коді чисел 101010 і 110.
6.  Знайдіть частку від ділення двох двійкових чисел 100001 і 11.
7.  Перетворіть двійкове число 1101010110 у вісімкову і десяткову системи.
8.  Перетворіть у шістнадцяткову систему десяткові числа 332 і 415.
9.  Яким двійковим і десятковим числам відповідають записи 2В, В8?
10. Скільки цілих чисел можна записати за допомогою коду завдовжки 1 байт (2 байти)?