Добавил:
інстаграм _roman.kob, курсові роботи з тєрєхова в.в. для КІ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Комп.логіка (лаб.метод)2016 розраха.docx
Скачиваний:
27
Добавлен:
31.05.2020
Размер:
426.54 Кб
Скачать

Іі. Арифметичні операції з фіксованою комою і плаваючою комою

Теоретичний матеріал.

Застосовуються два основні способи представлення чисел - з фіксованою і плаваючою комою. Більшість універсальних ЕОМ працюють з числами, представленими з плаваючою комою, а більшість спеціалізованих - з фіксованою комою.

Арифметика чисел з фіксованою комою:

а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

Завдання:

  1. Запишіть дату свого народження DDMM,PPPP (н/п, 1509,1991)

  2. Перетворіть дату народження в двійкову систему у форматі з плаваючою комою Double

  3. Запишіть дату народження своєї матері DDMM,PPPP (н/п, 1509,1991)

  4. Перетворіть дату народження матері в двійкову систему у форматі з плаваючою комою Double

  5. Виконайте додавання обох дат у десятковій і двійковій формах.

  6. Порівняйте результати додавання у обох системах числення.

  7. Оформити звіт з лабораторної роботи.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]