Форми подання чисел
Довільне число можемо записати в різних формах наприклад: число 0,028 можемо подати у вигляді 2810-3, або 0,03 (заокруглене), або 2,810-2 та інше. Наявність багатьох форм подання одного і того ж числа може бути причиною ускладнень роботи цифрового пристрою. Для уникнення таких труднощів необхідно або створювати спеціальні алгоритми розпізнавання чисел, або кожен раз вказувати формат запису числа.
В електронно-обчислювальних пристроях використовують дві основні форми подання числа:
з фіксованою комою перед старшим розрядом (для правильного дробу) або після молодшого (для цілого числа);
з плаваючою комою, місце положення якої задається порядком числа.
Місце коми в обох форматах розуміється неявно, без використання додаткових розрядів. Необхідно відмітити що нумерація розрядів у великих машинах проводиться зліва направо, а в міні- і мікрокомп’ютерах та мікропроцесорах – справа наліво.
Розрядною сіткою називають сукупність запам’ятовуючих елементів які використовують для розміщення одного двійкового числа. Для різних класів комп’ютерів довжина розрядної сітки складає 8, 16, 32, 64 та більше розрядів. Форматом будемо називати спосіб розміщення компонентів числа у розрядній сітці, тобто послідовність і позиції знака, мантиси, порядку та ін.
2.1. Подання чисел з фіксованою комою
При подані чисел з фіксованою комою положення коми закріплюється у певному місці відносно розрядів числа і зберігають незмінним для всіх чисел, які зображають у певній розрядній сітці. Як правило кому фіксують перед першим («старшим») розрядом і в розрядній сітці можливо подати числа які за модулем менші одиниці. Для запису знаку двійкового числа використовують старший знаковий розряд (0 відповідає знаку +, 1 – знаку «мінус»).Підчас виконання арифметичних дій над правильними дробами можемо отримати двійкові числа, які за абсолютною величиною більші або рівні 1, що називається переповненням розрядної сітки, і старші розряди числа втрачаються. Для виключення випадків переповнення вводять масштаб величини. Числа, які за абсолютною величиною менші ніж одиниця молодшого розряду, також втрачаються і називаються машинним нулем.
Щоб спростити функціонування цифрового пристрою необхідно обмежити вхідну інформацію певною областю чисел. Наприклад на вхід пристрою надходять тільки правильні дроби, то абсолютне значення числа А змінюється в межах
Аmin | A | Аmax; Аmin = 1; Аmax = 2k – 1, (15)
де k – кількість розрядів цифрової частини числа.
Інтервал числової осі, розміщений симетрично між максимальним та мінімальним значенням числа буде6мо називати діапазон подання. Звідки діапазон подання цілих чисел з урахуванням симетрії відносно нуля числової осі запишемо
DА = 2Аmax = 2(2k – 1) 2k+1. (16)
Приклад: Розрахувати максимальне значення і діапазон подання цілого числа із знаком у 32-розрядній сітці. На основі попередніх виразів для k – 31 отримуємо:
Аmax = 231 – 1 = 2147483647; D = 2Аmax = 4294967294.
Якщо на вхід обчислюю чого пристрою подаються тільки правильні дроби то
Аmin | A | Аmax; Аmin = 2-k; Аmax = 1 - 2k. (17)
Звідки правильний дріб, за модулем менших за 2-k, сприймається як машинний нуль; числа більші за одиницю, викликають переповнення розрядної сітки. Діапазон подання правильного дробу
DА = 2Аmax = 2(1 – 2-k) 2, (18)
оскільки 1 2-k.
Враховуючи, що в машинному подані кома ставиться перед старшим розрядом правильного дробу. Тобто, зберігається тільки дробова частина, в розряд цілої частини ми можемо записати додаткову інформацію.
Оскільки числа бувають додатними і від’ємними, то формат машинного подання числа поділяється на знакову частину і поле числа. В знакову частину записується інформація про знак. Приймемо, що знак додатного числа + зображається символом 0, а знак від’ємного числа - подається символом 1.
0 , |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Номер розряду |
|
|
|
||||||||||
Знакова частина |
П о л е ч и с л а |
|
||||||||||
1 , |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 , |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 1 |
Рис. 1. Подання чисел у формі з фіксованою комою
Приймемо, що цифровий пристрій оперує розрядною сіткою довжиною 12 двійкових розрядів (рис. 1), та враховуючи що на вході цифрового пристрою використовуються правильні дроби, число А можемо подати у вигляді
- 1 Аф 1, (19)
звідки
А = АфКА,
де Аф – машинне подання числа у формі з фіксованою комою, КА – масштабний коефіцієнт, що відповідає умові (19), та визначає той факт, що в машинному зображенні числа кома завжди ставиться після цілої частини дробу, тобто перед її старшим розрядом.
Приклад: Якщо на вхід цифрового пристрою з розрядною сіткою12 двійкових розрядів (рис. 1). Необхідно визначити масштабний коефіцієнт для чисел А1 = -1011,01111102 та А2 = 0,1100011012.
Для виконання умови (19), необхідно число більше за абсолютним значенням записати у вигляді А1 = -0,1011011111024. Звідки А1ф = -1,10110111110, що відповідає масштабному коефіцієнту КА1 = 24. Число А2 повинне розміститись в заданій розрядній сітці зі збереженням відповідних розрядів, тобто КА1 = КА2 = 24. Звідки А2 = +0,000011000110124, або Аф2 = +0,00001100011 (рис. 1).
З прикладу видно, що подання чисел у формі з фіксованою комою може викликати похибку подання. Так для числа А2 абсолютна похибка подання оцінюється величиною частини числа, що не помістилась в розрядну сітку, тобто величиною 0,000000000000124. Помилка подання залежить від правильності вибору масштабних коефіцієнтів. Обчислення останніх повинне відбуватися так, щоб виключити можливість появи в процесі функціонування цифрового пристрою, чисел машинне зображення яких не задовольняє умові (19).
2.2. Подання чисел у формі з плаваючою комою
В нормальній формі
Ан = mApA, (20)
де mA – мантиса числа А; pA – порядок числа А.
Як видно з поданого вище матеріалу, що таке подання чисел не однозначне, тому для визначеності вводять деякі обмеження. Найбільш поширеним і зручним для подання чисел в цифрових пристроях є обмеження у вигляді
q-1 mA 1, (21)
де q – основа системи числення.
Нормалізована форма подання чисел – форма подання чисел для якої виконується умова (21).
Оскільки в даному випадку абсолютне значення мантиси лежить в межах від q-1 до 1- q-n, де n – кількість розрядів для подання мантиси без знаку, положення розрядів числа в його машинному подання не фіксоване. Тому таку форму подання чисел називають також формою подання числа з плаваючою комою.
Приклад: Запис числа у формі з плаваючою комою:
А2 = 21101,1101 = 2210,11101 = 240,1011101.
Формат машинного зображення числа з плаваючою комою повинен містити знакові частини і поля для мантиси та порядку (рис. 2, а). Виділяються спеціальні розряди для зображення знаку числа (мантиси) і знаку порядку або характеристики (рис. 2, а, б).
а) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
Номер розряду |
|
Поле миси |
|
|
|
||||||||||||
Знак мантиси |
|
|
|
|
Знак порядку |
|
|
|
||||||||
б) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
Знак числа |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
в) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
1, |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
|
|
|
|
||||||||||||||
г) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0, |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
|
|
|
|
||||||||||||||
Рис. 2. Подання числа у формі з плаваючою комою
Приклад: Нехай в розрядну сітку цифрового пристрою (рис. 2) необхідно записати двійкові числа А1 = - 10110,11112 та А2 = + 0,000110101112. Перш за все необхідно подати дані в нормальній формі (рис. 2, в, г). Порядок числа вибираємо таким чином, щоб для них виконувалась умова (21), тобто А1 = - 0,101101111225 і А2 = + 0,1101011122-3. Оскільки система числення для заданого цифрового пристрою є постійною, то немає необхідності вказувати її основу, достатньо лише подати показник порядку.
Оскільки для подання порядку виділено п’ять цифрових розрядів і один розряд для знаку, їх машинне подання і машинне подання мантиси відповідно має вид:
рА1 |
= |
0 |
00101 |
|
рА2 |
= |
1 |
00011 |
|
|
|
|
|
|
|
|
|
mA1 |
= |
1, |
101101111 |
|
mA2 |
= |
0, |
11010111 |
Подання від’ємних чисел
Один із способів виконання операції віднімання з допомогою двійкового суматора – заміна знаку числа яке віднімається і додавання його до числа яке зменшується:
А – В = А + (- В) (22)
Цим операцію арифметичного віднімання замінюють на алгебраїчне додавання, яка і є основною операцією двійкового суматора. Звідки виникає питання: як подавати від’ємні числа в цифрових пристроях?
Для подання від’ємних чисел в машинних кодах використовують коди прямий, доповнювальний та обернений. Для прикладу, розглянемо застосування даних кодів для чисел з фіксованою комою за модулем менших одиниці.
Прямий код числа А = - 0а1а2…аn - машинне подання даного числа має вид Ам пр = 1,а1а2…аn. З визначення видно, що в прямому коді всі цифрові розряди від’ємного числа лишаються незмінними, а в знаковій частині записується одиниця.
Приклад: Якщо А = - 0,101110 то Ам пр = 1,101110. Для додатного числа подання в прямому коді залишається незмінним, якщо А = -0,101110 то Ам пр = 0,101110.
В прямому коді в розрядну сітку цифрового пристрою можемо записати наступне максимальне за абсолютним значенням число Апр max= 0,11…1= 1 – 2-n, де n – кількість розрядів розрядної сітки цифрового пристрою.
Діапазон зміни машинного відображення для прямого коду знаходиться в межах – -(1-2-n) Апр (1-2-n). В попередніх прикладах прямій код використовувався для запису чисел в розрядну сітку цифрового пристрою.
Правило перетворення чисел в прямий код має вид:
Апр =
(23)
Доповнювальний код числа А =
0а1а2…аn – таке машинне
відображення даного числа Ад =
1,
,
для якого
=0,
якщо аі = 1, і
=
0, якщо аі = 0, за виключенням
останнього значущого розряду, для якого
=
1 при аk = 1.
Приклад: Число А = - 0,101110 в доповнювальному коді запишеться так АД 1,010010.
Тобто доповнювальний код є математичним доповненням основи системи числення
|А| + Ад = q, (24)
де |А| - абсолютне значення числа А.
Оскільки додатні числа не змінюють свого зображення в доповнювальному коді, то правило перетворення в доповнювальний код можемо записати наступним чином:
Ад =
(25)
Максимальне доповнювальне число, в цьому випадку, буде рівне (1-2-n).
Найбільше від’ємне число, яке можемо
записати в доповнювальному коді,
визначимо наступним чином. Приймемо,
що найбільше від’ємне число А1 =
-0,11..11. Тоді зображення даного числа в
доповнювальному коді
=
1,00..01. Якщо до числа А1 добавити
одиницю в самий молодший розряд, то в
результаті то в результаті отримаємо
число -1,00..0. Перетворивши дане число за
формальними правилами, отримаємо Ад
min = 1,00…0. Звідки діапазон зміни
машинного зображення чисел для
форми подання з фіксованою комою перед
старшим розрядом, в доповнювальному
коді
- 1 Ад (1-2-n).
Для великих ЕОМ машинне зображення чисел - завжди цілі числа. При цьому найбільше додатне число складається з цілої частини, де всі розряди рівні одиниці, і знакового розряду, рівного нулю (наприклад, у випадку 16 двійкових розрядів (два байти) максимальне додатне число рівне 0111111111111111, тобто рівне 215 – 1); найбільше від’ємне число складається з цілої частини, всі розряди якої рівні нулю, і знакового розряду, рівного одиниці, тобто приймає вид 1000000000000000. В даному випадку говоримо про форму подання чисел з фіксованою комою. Звідки, співвідношення (24) для подання цілих чисел в доповнювальному коді приймає вигляд
|А| + Ад = qk-1, (26)
де k – кількість розрядів в цілій частині
машинного подання числа (k = 0,
).
Вираз (24) – частковий випадок формули (26) при k = 0.
Обернений код числа А = +0,а1а2…аn – таке машинне подання даного числа Аоб = 1, а1а2…аn для якого аі = 0, якщо аі = 1, і аі = 1, якщо аі = 0. З даного визначення слідує, що обернений код двійкового числа є інверсним зображенням самого числа, в якому всі розряди вихідного числа приймають інверсне (обернене) значення, тобто всі нулі замінюються на одиницю, а всі одиниці – на нуль. Наприклад, якщо А = - 0,101110, то Аоб = 1,010001. Для оберненого коду чисел, поданих у формі з комою, фіксованою перед старшим розрядом, справедливе співвідношення
|А| + Аоб = q – q-n, (27)
де |А| - абсолютна величина А; n – кількість розрядів після коми в зображенні числа.
Правила перетворення чисел в обернений код можемо сформулювати наступним чином:
Аоб =
(28)
Порівнявши вирази (24) і (27), бачимо, що
Ад = Аоб + qn. (29)
Співвідношення (29) використовується для отримання доповнювального коду від’ємних чисел за наступним алгоритмом: спочатку інвертується вихідна частина вихідного числа, в результаті отримуємо обернений код; далі добавляється одиниця в молодший розряд цифрової частини числа і тим самим отримуємо доповнювальний код його зображення.
Приклад: Знайти обернений та доповнювальний код числа А = -0,1110002.
Використовуючи визначення оберненого коду, отримуємо Аоб = 1,000111. Для знаходження доповнювального коду числа добавимо одиницю в молодший розряд його зображення:
|
|
1, |
0 |
0 |
0 |
1 |
1 |
1 |
|
+ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
Ад |
= |
1, |
0 |
0 |
1 |
0 |
0 |
0 |
Тобто: Аоб = 1,000111; Ад = 1,001000.
В оберненому коді можемо подати максимальне додатне число Аоб max = 0,11…1 = 1 – 2 –n і найбільше від’ємне число Аоб max = - 0,11…1 = - (1–2 –n), записане у вигляді 1,00…0.
При проектуванні цифрових пристроїв необхідно враховувати неоднозначне подання нуля в оберненому коді: +0 зображається 0,00…0, - 0 – 1,11…1.
Використання різних способів подання від’ємних чисел в цифрових пристроях обумовлює певний ряд особливостей виконання операцій алгебраїчного додавання двійкових чисел.
Похибка подання чисел
Подання числової інформації в цифровому пристрої, як правило, викликає появу похибки, величина якої залежить від форми подання числа і довжини розрядної сітки цифрового пристрою.
Абсолютна похибка подання – різниця між істинним значенням вхідної величини А і значенням, отриманим з машинного подання Ам, тобто А=А– Ам.
Відносна похибка подання – величина. яка визначається виразом
А = ААм. (30)
Вхідні величини незалежно від кількості значущих цифр можуть містити неточності. Наприклад досить часто приймаю = 3,14. Однак дана величина може бути отримана з більш високою точністю (800 знаків та більше). Якщо прийняти що = 3,14159265, то вданому випадку, абсолютна похибка буде становити = 0,00159265.
Часто деяка величина в одній системі числення має скінчене значення, а в іншій системі числення стає нескінченою величиною, наприклад дріб 13 має скінчене подання, але переведена в десяткову систему числення отримаємо 0,333… Або дріб 110 має скінчене десяткове значення, але переведене в двійкову систему числення, стає нескінченим дробом 0,0001100110011…
Тобто, при переведенні чисел з однієї системи числення в іншу неминуче виникає похибка, оцінити яку неважко, якщо відомі дійсні значення вхідних чисел.
Відповідно до виразу (19) число в цифровому пристрої зображається у вигляді Аq = АмКА, де масштабний коефіцієнт КА вибирають так, щоб абсолютне значення машинного подання числа А в системі числення з основою q = 2 було завжди менше одиниці: Аq = КА[а-1q-1 + а-2q-2 +…+ а-nq-n +…].
Оскільки довжина розрядної сітки цифрового пристрою рівна n двійкових розрядів після коми, то абсолютна похибка переведення десяткової інформації в систему з основою q буде визначатися
Ам = а-(n+1)q-(n+1) +…+
а-(n+s)q-(n+s) +… =
.
(31)
Якщо q = 2, то при аі = 1 максимальне значення похибки розраховується
Ам =
.
(32)
З виразу (32) бачимо, що максимальне значення похибки переведення з десяткової інформації в двійкову не буде перевищувати одиниці молодшого розряду розрядної сітки цифрового пристрою. Мінімальна похибка переведення рівна нулю.
Усереднена абсолютна похибка переведення чисел у двійкову систему числення Ам = (0 + 2-n)2 = 0,52-n.
Для подання чисел у формі з фіксованою комою абсолютне значення машинного подання числа
2-n |Ам| 1 – 2-n. (33)
Звідки, відносна похибка для мінімального значення числа Аф min = АмАф max = 0,52-n(1 – 2-n).
Оскільки для сучасних ЕОМ n = 16 64, тому 1 2-n, звідки Аф min = 0,52-n.
Аналогічно для максимального значення:
Аф max = Аф max Аф min = 0,52-n 2-n. (34)
З виразу (34) видно, похибка подання малих чисел у формі з фіксованою комою може бути доволі значною.
Для подання чисел у формі з плаваючою комою абсолютне значення мантиси
2-1 |mАн| 1 – 2-n. (35)
Похибка (32) – похибка мантиси. Для знаходження похибки подання числа з плаваючою комою величину цієї похибки необхідно перемножити на величину порядку числа рА
Ан max = 0,52-n рА 2-1рА = 2-n;
Ан min = 0,52-n рА (1-2-n)рА, (36)
де n – кількість розрядів для подання мантиси числа.
З виразу (36) видно, що відносна точність подання числа не залежить від величини числа.
Завдання для самостійного виконання
Перевести число 121 в двійкову систему числення.
Перетворити двійкове число 1000101010,010101.
Перетворити число 175,347 в двійкову систему числення з точністю 5%.
Скільки потрібно двійкових розрядів для подання числа 1238.
Записати десяткове число 781,362 у оберненому коді.
Подати десяткове число 376/128 у доповнювальному коді.
Перевести число 387 у тріскову систему числення.
Література
Бойко В., Гуржій А., Жуйков В., та ін. Схемотехніка електронних систем. Цифрова схемотехніка. – Київ, «Вища школа», 2004.
Бабич М., Жуков І. Комп’ютерна схемотехніка. Київ, «МК-Прес», 2004.
Угрюмов Е. Цифровая схемотехника. Сакт-Питербург, 2004.
Фрике К. Вводный курс цифровой электроники. Москва, 2004.
Бойт К. Цифровая электроника. Москва, 2007.
Андронік Буняк. Електроніка та мікросхемотехніка: навчальний посібник для вищих учбових закладів. - Київ - Тернопіль, 2001.
Мальцев П.П. й др. Цифровые интегральные микросхемы.: Справочник. -М.: Радио й связь . 1994.
Пухальский Г.И., Новосельцева В.Н. Проектирование дискретных устройств на интегральных микросхемах: Справочник. - М.: Радио и связь, 1990.
Титце У., Шенк К. Полупроводниковая схемотехника: Справочное руководство. Пер. с нем. - М.: Мир, 1983..
Скаржепа В.А., Луценко А.Н. Электроника й микросхемотехника.- К.: Выща школа, 1989.
