
Лабораторна робота 1.4 Кодування чисел (прямий, зворотній, додатковий).
Мета лабораторної роботи – ознайомитись з методами кодування чисел, отримати і закріпити практичні навички з побудови алгоритмів і програм.
Короткі теоретичні відомості
Необхідність кодування чисел визначається тим, що в ЕОМ неможлво або нераціонально вводити числа у тому вигляді, в якому вони зображуються людиною на папері.
При обчисленні ЕОМ оперує як з додатніми, так і з від’ємними числами. При цьому обчислення можна замінити додаванням, скориставшись доповненням від’ємного числа. Доповненням числа 12510 буде число *7510, числа 12516 буде число ЕDВ16, для числа 11012 - число 112. Ці доповнення отримують наступним чином:
_1*0010 _100016 _10000*
12510 12516 1*01*
87510 EDB16 112
Так як у ЕОМ є тільки пристрої, які виконують додавання, то віднімання замінюється додаванням спеціальних кодів чисел. Для виконання операцій з двійковими числами в ЕОМ використовуються прямий, зворотній, додатковий, модифікований зворотній і додаткові коди. Зображення додатніх чисел у всіх кодах однакове, а від’ємних різне.
Прямой код співпадає з записом самого числа. У знаковому розряді записується 0 (знак +) або 1 (знак-), а потім записується саме число.
Наприклад, числа: А1=+*,10*0 и А2= - *,10*0 у прямому коді записуюься у вигляді: [А1]пр=0 1010 і [А2]пр=1 1*10.
Приклад: В* = +0,1*1001 [В*]пр.= 0 *0*001;
В2 = - 0,*1101 [В2]пр.= 1 *1101.
Зворотній код від’ємного числа отримується наступним чином: у знаковому розряді записується одиниця, а в цифрових розрядах нулі замінюються одиницями, а одиниці - нулями.
Наприклад, числа А1=+0,1010 та А2= - 0,101* у зворотньому коді записуються у вигляді [А1]обр.=0 101* і [А2]обр.=1 0101.
Приклад: В1 = +0,101100 [В1]зв.= 0 101110;
В2 = - 0,010101 [В2]зв.= 1 1*1*1*.
Додатковий код від’ємного числа отримується додаванням одиниці молодшому розряду зворотнього коду цього числа.
Наприклад: числа А1=+0,1010 та А2= - 0,101* у додатковому коді записуються у вигляді: [А1]дод.=* 101* та [А*]дод.=1 0*10.
Приклад: В1 = +0,00110 [В1]дод.= 0 0*110;
В2 = - 0,00*101 [В2]дод.= 1 110011.
Модифікований код відрізняється тим, що на зображення знака числа у ньому відводиться два розряди, що дає можливість виявити переповнення розрядної сітки.
Наприклад, для числа А= - 0,101* отримаємо [А]мзв.=11 *101, [А]мдод.=11 0110.
Перехід від зворотнього та додаткового кодів до прямого здійснюється аналогічно переходу від прямого коду до зворотнього і додатковому.
При додаванні та відніманні чисел у зворотньому коді одиниця переносу, яка вийшла за межі знакового розряду, не відкидається, а додається до молодшого розряду результату, що здійснюється автоматично.
Наприклад, у зворотньому коді операції алгебраїчного додавання виконуються слідуючим чином:
1) а=0,10*0>0 [а]зв.=0 1010
b=0,0010>0 [в]зв.=0 0010
[х]зв.=0 1100
х= 0,1100
2) а= - *,1010<0
b= 0,1100>0
3) а=0,*010>*
b= - 0,0010<0
*) a= - 0,1010<0
b= - 0,0010<0
[а]зв.=1 0101
[в]зв.=0 1100
10 0001
[х]зв.=0 001*
х= 0,0010
[а]зв.= 0 1010
[в]зв.= * 1101
10 011*
[х]зв.= 0 100*
х= 0,1000
[a]зв.=1 0101 [b]зв.=* 1101
11 00*0
[*]зв.=* 0011
*= - 0,1100
Додавання та віднімання двійкових чисел у додатковому коді відбувається порозрядно, включаючи і знакові розряди. Одиниця переносу, яка вийшла за межі знакового розряду, відкидається.
Приклад:
*= - 0,*01*<0 b= - 0,0010<0
[a]дод.=1 0110 [b]дод.=1 1*10
11 01*0
[х]дод.=1 010* [х]зв.=1 *0*1
х= - *,1100
Наприклад, маємо число А1 = 0,10*112 та А2 = 0,01*2. Потрібно виконати дію А1-А2
_0,10111
0,01*00
0,01011
Замінимо операцію відніманя додаванням. Для цього виконаємо кодування: отримаємо зворотній та додатковий коди для чисел А1 та А2.
[A*]зв.= * 10111 [A2]зв.= * 1001*
[A*]зв.= 0 *0*1* [*2]дод.= 1 1*100
Виконаємо операцію додавання отриманих кодів
+ [A1]зв.= * 10111
[A*]зв.= 1 10011
10 010*0
[A1+A*]озв.= 0 01011
A1+A2 = 0,0101*
+[A1]зв.= 0 1011*
[A2]зв.= * 1010*
10 *1*11
[A*+A2]зв.= 0 01011
*1+A2 = *,0101*
ЕОМ можуть обробляти як числову, так і текстову інформацію. Текстова інформація (російські і латинські літери, розділові знаки и т.д.), як і числа, кодуються послідовністю двійкових цифр. При використанні для таких цілей 8-розрядних кодів (байтів) можна закодувати 256 різних символів (табл.1). Така система кодування носит назву КОИ-7 і принята у більшості мікроЕОМ.
Таблиця 1