- •Пояснювальна записка
- •Лабораторна робота № 1. Перевід чисел із одної системи числення в іншу. Виконання арифметичних операцій в різних системах числення.
- •Основні характеристики позиційних систем числення.
- •Перевід чисел із одної системи числення в другу.
- •Перевід чисел з системи числення з основою n в десяткову систему числення.
- •Перевід чисел з однієї системи числення в іншу, коли одна основа є цілим степенем іншої.
- •Лабораторна робота № 2. І. Представлення чисел в різних кодах і операції над ними. Подання числових даних у пам'яті еом
- •Кодування символів
- •Двійково-десяткове кодування
- •Основні способи представлення чисел
- •Кодування дійсних чисел
- •Іі. Арифметичні операції з фіксованою комою і плаваючою комою
- •Лабораторна робота № 3. Алгебра логіки. Закони алгебри логіки. Перемикаючі функції.
- •Лабораторна робота № 4. Дослідження основних логічних елементів
- •Лабораторна робота № 5. Синтез і моделювання комбінаційних пристроїв, заданих в табличній формі
- •Подання логічної функції, заданої таблично, в аналітичній формі
- •Приклад подання логічної функції в дндф
Іі. Арифметичні операції з фіксованою комою і плаваючою комою
Теоретичний матеріал.
Застосовуються два основні способи представлення чисел - з фіксованою і плаваючою комою. Більшість універсальних ЕОМ працюють з числами, представленими з плаваючою комою, а більшість спеціалізованих - з фіксованою комою.
Арифметика чисел з фіксованою комою:
а1 = 1100010101000011100101012
а2 = 1011010000010010000100112
Виконаємо додавання (віднімання) двійкових чисел в додатковому коді при всіх можливих сполученнях знаків. Представимо числа в додатковому коді за формулою:
А, якщо число додатне
Адодаткове = Аобернене +1, якщо число від’ємне
Після переведення чисел отримаємо:
+а1 = 1100010101000011100101012
+а2 = 1011010000010010000100112
-а1= 0011101010111100011010112
-а2= 0100101111101101111011012
Виконаємо додавання а1+а2
110001010100001110010101
+
101101000001001000010011
1011110010101010110101000
Виконаємо дію а1-а2=а1+(-а2)
110001010100001110010101
+
010010111110110111101101
1000100010011000110000010
Виконаємо дію а2-а1=а2+(-а1)
101101000001001000010011
+
001110101011110001101011
111011101100111001111110
Виконаємо дію -а1-а2=-а1+(-а2)
001110101011110001101011
+
010010111110110111101101
100001101010101001011000
Виконаємо перевірку отриманих результатів. Додамо і віднімемо числа а1 і а2 при всіх можливих сполученнях знаків в десятковій системі числення.
а1 = 1292789310
а2 = 1180110710
Виконаємо дію а1+а2 = 12927893+11801107=24729000.
Результат переведемо в двійкову систему числення і запишемо його у
додатковому коді:
2472900010 = 10111100101010101101010002
Даний результат суми чисел +а1 і +а2 в додатковому коді співпав з результатом отриманим додаванням цих чисел в десятковій системі числення
Виконаємо дію а1- а2= 12927893 –11801107= 1126786
Результат переведемо в двійкову систему числення і запишемо його у додатковому коді:
112678610 = 1000100110001100000102
Виконаємо дію а2 – а1 = 11801107 – 12927893= -1126786
Результат переведемо в двійкову систему числення і запишемо його в додатковому коді:
-112678610 = 1110111011001110011111102
Даний результат співпав з додатковим кодом різниці чисел +а1 – а2, отриманий швидше.
Виконаємо дію –а2 – а1 = –11801107 –12927893 =-24729000.
Результат переведемо в двійкову систему числення і запишемо його в додатковому коді :
-2472900010 = 1000011010101010010110002
Арифметика чисел з плаваючою комою.
Додавання і віднімання двійкових чисел із плаваючою комою відбувається за три кроки:
Крок 1. Вирівнювання порядків. У будь-якому числі з плаваючою комою вага Ni одиниці i-го розряду мантиси визначається не тільки позицією даного розряду, але і порядком p числа, тобто Ni = 2p-i. де i – номер позиції, рахуючи вправо від коми.
При додаванні мантис необхідно, щоб вага одиниць однойменних розрядів мантиси була однаковою. Для цього мантиси переміщуються одна відносно одної так, щоб їхні порядки стали рівними. При вирівнювання порядків отримувати мантиси більше одиниці не дозволяється, і тоді їх треба рухати у бік більшого порядку. Мантиси з меншим порядком рухаються вправо на кількість розрядів, яке дорівнює різниці порядків.
Крок 2. Додавання мантис із вирівняними порядками, яке відбувається аналогічно додаванню чисел із фіксованою комою. Для додавання від’ємних мантис використовують додатковий або обернений модифіковані двійкові коди. Сума мантис є сумою чисел. Порядок суми дорівнює спільному порядку доданків, тобто порядку більшого числа.
Крок 3. Нормалізація отриманого результату. При додаванні мантис за абсолютною величиною менших одиниці можливі випадки переповнення розрядної сітки – порушення нормалізації зліва від коми. Ознакою такого порушення нормалізації є поява в знакових розрядах модифікованого коду суми різних цифр (наприклад, 01,101… або 10,101…). Для встановлення нормалізації мантиса суми рухається на один розряд вправо, а порядок суми збільшується на одиницю.
При порушенні нормалізації справа від коми у мантисі суми є один або декілька нулів справа від коми. При нормалізації вліво мантиса рухається вліво на таку кількість розрядів, щоб старша цифра мантиси стала одиницею. Порядок суми зменшується на кількість одиниць, яка дорівнює числу рухів мантиси при нормалізації. Якщо всі розряди суми дорівнюють нулю, то нормалізація не відбувається, а порядок суми дорівнює нулю.
Вихідні двійкові числа а1 і а3 розглянемо як числа із плаваючою комою, що записані в Single форматі (32 біти).
а1 в Single форматі (32 біти) буде виглядати:
1 1000 1010 1000 0111 0010 1010 0000 000
а3 в Single форматі (32 біти) довжини буде виглядати:
0 1000 0111 0010 0100 0010 0110 000 000, де підкреслена частина чисел є зміщеним порядком.
Не забуваємо, що числа у даному форматі зберігаються нормалізованими, тобто, старший розряд мантиси, який у пам’ять не записують, дорівнює 1.
Для обчислення суми і різниці цих чисел з плаваючою комою, постараємося вирівняти порядки, так як додавати або віднімати мантиси чисел ми маємо право тільки в тому випадку, коли порядки чисел рівні.
Знайдемо різницю порядків чисел а1 і а3:
р = 10001010 – 10000111 = 10001010 + (–10000111)
Віднімання виконаємо в обернених кодах.
– 10000111пр = 01111000об
10001010 – 10000111= 10001010 + 01111000
10001010
+
01111000
1 00000010
Отриману одиницю переносу зі старшого розряду циклічно додаємо до молодшого розряду суми і отримаємо кінцевий результат різниці порядків
= 00000011об = 310
Тобто, для вирівнювання розрядів мантис ми повинні змістити мантису числа а3 на три розряди вправо, враховуючи скриту одиницю нормалізованої мантиси, а спільний зміщений порядок чисел а1 і а3 буде дорівнювати порядку більшого числа, тобто р1= 10001010
а3 = 1 1000 1010 0001 0010 0100 0010 0110 000, де підкреслена одиниця є старшим розрядом нормалізованої мантиси, яка у пам’ять не записується.
Число а1 є від’ємним, так як у знаковому розряді є 1, тому ми повинні код мантиси числа а1 перетворити в обернений або додатковий код. Число а3 є додатнім, бо у знаковому розряді містить 0, тому код мантис в оберненому коді такий же, як код мантиси у прямому коді.
м1 = 1.110000111001010100000000пр = 1.0011110001101010111111111об
м3 = 0.000100100100001001100000пр
Виконаємо додавання мантис чисел а1 і:а3 в обернених кодах, враховуючи скриту 1 нормалізованої мантиси:
1.101111000110101011111111
+
0.000100100100001001100000
1.010011101010110101011111об
Одержаний результат містить у знаковому розряді 1, тобто одержана сума є від’ємною у оберненому коді. Перетворимо її в прямий код, проінвертувавши числові розряди.
1.101100010101001010100000пр
Жирним виділено старший розряд мантиси, який при записі у пам’ять буде скритим.
Тоді число у форматі Single із скритим бітом мантиси, зміщеним порядком і знаковим розрядом буде виглядати таким чином:
1.10001010 0110 0010 1010 0101 0100 000
Завдання:
-
Запишіть дату свого народження DDMM,PPPP (н/п, 1509,1991)
-
Перетворіть дату народження в двійкову систему у форматі з плаваючою комою Double
-
Запишіть дату народження своєї матері DDMM,PPPP (н/п, 1509,1991)
-
Перетворіть дату народження матері в двійкову систему у форматі з плаваючою комою Double
-
Виконайте додавання обох дат у десятковій і двійковій формах.
-
Порівняйте результати додавання у обох системах числення.
-
Оформити звіт з лабораторної роботи.