на головну | список тем | перегляд презинтацій | самотестування | історія створення

 

 

 

 

Тема6. Двійкове кодування

Одиночний цифровий сигнал не дуже інформативний, адже він може приймати тільки два значення: нуль і одиниця. Тому в тих випадках, коли необхідно передавати, обробляти або зберігати великі об'єми інформації, звичайно застосовують декілька паралельних цифрових сигналів. При цьому всі ці сигнали повинно розглядатися тільки одночасно, кожний з них окремо не має сенсу. У таких випадках говорять про двійкові коди, тобто про коди, утворені цифровими (логічними, двійковими) сигналами. Кожний з логічних сигналів, що входять в код, називається розрядом. Чим більше розрядів входить в код, тим більше значень може приймати даний код.


Малюнок 6.1. Десяткове та двійкове кодування

На відміну від звичного для нас десяткового кодування чисел, тобто коду з основою десять, при двійковому кодуванні в основі коду лежить число два. Тобто кожна цифра коду (кожен розряд) двійкового коду може приймати не десять значень (як в десятковому коді: 0, 1,2, 3, 4, 5, 6, 7, 8, 9), а всього лише два значення - 0 і 1. А система позиційного запису залишається такою ж, тобто справа пишеться наймолодший розряд, а сльова- самий старший. Але якщо в десятковій системі вага кожного наступного розряду вдесятеро більше ваги попереднього розряду, то в двійковій системі (при двійковому кодуванні) - в два рази. Кожен розряд двійкового коду називається бітом (від англійського Binary Digit - двійкове число).

У таблиці. 6.1. показано відповідність перших двадцяти чисел в десятковій і двійковій системах.
З таблиці видно, що кількість розрядів двійкового коду, потрібна для представлення кожного числа (окрім 0 і 1), значно більша, чим необхідна кількість розрядів десяткового коду. Найбільше число, яке можна представити 3-розрядним кодом, в десятковій системі складає 999, а в двійковій системі - всього лише 7(111 в двійковому коді). У загальному випадку n-розрядне двійкове число може приймати 2n різних значень, а n-розрядне десяткове число - 10n значень. Тому запис великих двійкових чисел (з кількістю розрядів більше десяти) стає не дуже зручним.
Для того, щоб спростити запис двійкових чисел, була запропонована так звана шістнадцяткова система. В цьому випадку всі двійкові розряди розбиваються на групи по чотири розряди (починаючи з молодшого), а потім вже кожна група кодується одним символом. Кожна така група називається півбайтом (або нібблом, тетрадою), а дві групи (8 розрядів) - байтом. З таблиця. 6.1 видно, що 4-розрядне двійкове число може приймати 16 різних значень (від 0 до 15). Тому необхідне число символів для шістнадцяткового коду теж рівне 16, звідки і взята назва коду. Як перші 10 символів беруться цифри від 0 до 9, а потім використовуються 6 початкових заголовних букв латинського алфавіту: А, В, С, D, E, F.

У таблиці. 6.2 приведені приклади шістнадцяткового кодування перших 20 чисел (у дужках приведені двійкові числа), а на малюнку 6.2. показаний приклад запису двійкового числа в 16-вому вигляді. Для позначення 16-кового кодування іноді використовують букву h або Н (від англійського Hexadecimal) в кінці числа. Наприклад, запис A17F h позначає 16- ковове число A17F. Тут А1 є старший байт числа, а 7F - молодший байт числа. Все число (у нашому випадку - двобайтове) називається словом.
Для переводу 16-кового числа в десяткове необхідно помножити значення молодшого (нульового) розряду на одиницю, значення наступного (першого) розряду на 16, другого розряду на 256 (162) і т. д., а потім додати всі доданки. Наприклад, візьмемо число A17F:


A17F = F • 160 + 7 • 161 + 1 • 162 + А • 163 =
= 15 • 1 + 7 • 16 + 1 • 256 + 10 • 4096 = 41343.

Малюнок 6.2. Шістнадцяткове кодування

Для перетворення десяткового числа в двійкове необхідно поділити десяткове число цілочисельно на 2. Ділення необхідно проводити до ого моменту поки в остачі від ділення не залишиться 1 або 0. Потім записати одержані числа 0 та 1 зліва на право. Тобто беремо спочатку остачу від ділення першою, потім записуємо справа слідуючу остачу і так далі. Це все зображено на малюнку 6.3.
Наприклад число 37 з десяткової системи числення перетворимо в двійкову.


Малюнок 6.3. Переворення десяткового числа в двійкове.

Для виконання зворотньої операції, тобто перетворення двійкового числа в десяткове, необхідно виконати слідуюче: в рядок записуємо двійкове число, під кожним розрядом записаного числа записуємо вагу розряду (крайній правий розряд має вагу 20, старший розряд має вагу 21, далі 22, 23, і т.д. ) , обчислюємо вагу, а далі додаємо між собою лише вагу тих розрядів нашого вихідного двійкового числа, які рівні 1. Одержана сума і буде десятковий відповідник двійкового числа.

Для одночасного уявлення як двійкових позитивних, так і двійкових негативних чисел найчастіше використовується так званий додатковий код. Від”ємні числа в цьому коді виражаються таким числом, яке, будучи складено з позитивним числом такої ж величини, дасть в результаті нуль. Для того, щоб одержати від”ємне число, потрібно доповнити 1 кожен розряд такого ж позитивного числа, тобто замінити в його двійковому коді всі нулі на одиниці і одиниці на нулі, і потім додати до результату 1. Наприклад, запишемо двійкове представлення числа -5 з використанням додаткового коду. Двійковий код числа 5 є 0101. Замінюємо у всіх розрядах 1 на 0 і 0 на 1: 1010. Додаємо одиницю: 1011. Підсумовуємо результат з початковим числом: 1011 +0101 = 0000 (перенесення в п'ятий розряд ігноруємо).
Від”ємні числа в додатковому коді відрізняються від позитивних значенням старшого розряду: одиниця в старшому розряді визначає від”ємне число, а нуль - позитивне.

попередня тема наступна тема

тестування