Главная Обратная связь

Дисциплины:






Теми для попереднього пророблення



Лабораторна робота № 4

МАШИННІ КОДИ. ДОДАВАННЯ ДІЙСНИХ ДВІЙКОВИХ ЧИСЕЛ У ФОРМАТІ З ПЛАВАЮЧОЮ КОМОЮ

 

Мета роботи

У результаті виконання лабораторної роботи:

· вміти подавати дійсні двійкові числа у форматі з плаваючою комою;

· навчитись виконувати операцію додавання дійсних двійкових чисел у форматі з плаваючою комою.

 

Теми для попереднього пророблення

2.1. Правила додавання цілих двійкових чисел з урахуванням можливого переносу із попереднього молодшого розряду.

2.2. Подання дійсних чисел у двійковій системі числення.

2.3. Правила додавання дійсних двійкових чисел.

2.4. Особливості виконання операції додавання у зворотному або у додатковому модифікованих кодах при переповненні розрядної сітки.

3. Завдання до лабораторної роботи

3.1. Вибрати індивідуальне завдання із табл. 1 у відповідності з порядковим номером в журналі групи. Подати у двійковій системі числення, з плаваючою комою, числа A10 = С10 + N та B10 = D10 + N (див. табл. 1), де N – номер за списком. Точність подання чисел A2 та B2 – п’ять цифр після коми.

 

Таблиця 1 – Варіанти індивідуальних завдань

Варіант С10 D10 Варіант C10 D10
16.53 –36.29 36.63 –57.75
23.47 53.67 –59.97 37.73
–65.38 15.74 38.12 68.59
42.89 33.52 –71.17 39.93
–76.74 17.44 40.14 –56.65
–32.19 –80.88 –72.27 43.36
99.57 –15.97 44.51 –69.96
51.68 28.79 63.85 46.64
–35.49 77.39 –48.84 –18.81
64.25 –19.43 61.16 50.15
–47.31 29.34 –52.29 28.82
20.52 45.78 26.63 54.47
30.32 –55.56 58.85 –24.42
67.76 31.41 22.72 60.76
34.54 –87.77 –70.73 21.12

3.2.Двійкові числа A2 та B2 з плаваючою комою представити у наочному форматі, наведеному на рис. 3.

3.3. Вирівняти порядки та розрядну сітку чисел A2 та B2. Подати мантиси чисел A2 та B2 у додатковому і зворотному модифікованих кодах. Результати оформити у вигляді табл. 3.



3.4.Виконати додавання в додатковому модифікованому коді двійкових чисел А та В, використовуючи різні комбінації знаків у цих чисел, а саме (+А, +В), (+А, –В), (–А, –В) та (–А, +В). Процес додавання відобразити для чисел зі всіма комбінаціями знаків. Результати додавання, виконані у відповідності з п. 4.3 (п.п. 4.3.1- п.п. 4.3.4), оформити у вигляді рисунків, подібних рисункам 4, 5, 6 і 7.

3.5. Обчислити похибку відтворення дробової частини результату.

3.6. Результати додавання, виконані вручну, перевірити за допомогою демонстраційної програми.

 

4. Хід отримання результатів

4.1. Зображення чисел у форматі з плаваючою комою

Будь-яке позиційне число можна подати у показовій формі. Наприклад, можемо записати А10 = +123.456 = +0.123456·103, де ′+′ – знак числа, 0.123456 – мантиса, 10 – основа системи числення, 3 – порядок (тобто степінь) числа 10. Порядок числа, як і саме число, може бути від’ємним. Наприклад, для В10 = 0.000123456 = 0.123456·10-3 порядок від’ємний (знак порядку – ′–′). Мантису треба нормалізувати, причому так, щоб будь-яке число в пам’яті комп’ютера було представлене в одному й тому ж форматі. Двійкові дійсні числа у комп’ютері також подаються у показовій формі.

Існує стандарт IEEE 754-2008 для двійкової арифметики з плаваючою комою. Цей стандарт розроблений асоціацією IEEE (Institute of Electrical and Electronics Engineers). Він описує формат подання чисел з плаваючою комою і використовується для подання чисел з плаваючою комою в двійковому коді. У відповідності з цим стандартом старший двійковий розряд (ціла частина) мантиси дійсного числа в нормалізованому вигляді завжди дорівнює ′1′. У такому разі цілу частину мантиси нема потреби відображати в пам’яті.

Стандарт передбачає наявність у двійковому коді числа з плаваючою комою знака числа (s), порядку і мантиси:

 

Рисунок 1 – Формати чисел з плаваючою комою

 

У вказаному стандарті поле знака порядку відсутнє, тому що в полі ″порядок″ розміщується значення, яке іноді іменують ″характеристикою″, і це значення завжди додатне. Його отримують шляхом додавання значення істинного порядку до додатної константи k = 2n–11, яка зветься зсувом (n – кількість бітів, які відведені під подання порядку) (див. табл. 2).

Наприклад, у 4-байтовому полі можуть бути розміщені числа у форматі з плаваючою комою, у яких порядок може приймати десяткові значення від +38 до –38.

 

Таблиця 2 – Залежність значення зсуву від довжини поля,

виділеного для розміщення числа

Довжина поля (байти) Десяткове значення зсуву (k)
+127
+1023
+16383

 

Таким чином, матимемо:

(+127) + (+38) = +165; 16510 à 101001012 (8 бітів)

(+127) + (–38) = +89; 8910 à 010110012 (8 бітів)

Тобто характеристика дійсно завжди додатна.

Зміщений порядок (характеристика) Pа може бути обчислений так:

Pа = k + рa = (2n–1 1) + рa,,

де рa – фактичний порядок числа з нормалізованою мантисою,

n – кількість бітів, відведених під подання порядку.

Наприклад, для числа A10 = –30.125, розміщеного в 4-байтовому полі, маємо: A2 = –11110.001 = –1.1110001·2+4. Знак числа від’ємний, тому в знаковому розряді (s) буде одиниця. Нормалізована мантиса числа ма = 1.1110001, при цьому порядок ра = 410 (1002).

Зміщений порядок у форматі, під подання числа в якому відведене 4-байтове поле (n = 8 бітів):

Ра = (2n–11) + рa = (28–1 – 1) + (+4) = (+127) + (+4) = +13110 ;

Ра = 0,100000112.

Числа в пам’яті комп’ютера адресуються шляхом вказування адреси молодшого байту.

Результат подання числа A10 = – 30.125, розміщеного в 4-байтовому полі у пам’яті комп’ютера у відповідності зі стандартом IEEE 754-2008, наведено на рис. 2. Буквою ′з′ позначений розряд знака, буквою ′п′ позначені розряди зміщеного порядку. Буквою ′м′ позначені розряди нормалізованої мантиси.

 

Порядкові номери бітів
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
з п п п п п п п пм м м м м м м м м м м м м м м м м м м м м м м
1 1 0 0 0 0 0 1 11 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

 

Рисунок 2 – Результат подання числа A10 = –30.125 в 4-байтовому полі в пам’яті комп’ютера

 

Вказаному двійковому коду відповідає 16-й код: C1 F1 00 0016.

Оскільки у середовищі налагоджувача вміст пам’яті, де розміщені дані, відображується зліва направо, починаючи з молодших адрес, то в цьому середовищі ми побачимо для вказаного вище числа таку послідовність 16-х цифр: 00 00 F1 C116.

4.2. Для наочності подання числа у форматі з плаваючою комою, ми будемо використовувати нестандартний формат, поданий на рис. 3.

 

 
 

 


Рисунок 3 – Наочний формат зображення чисел з плаваючою комою

 

У цьому форматі нормалізованою буде мантиса з нульовим значенням цілої частини, а дробова її частина після коми повинна починатись з ′1′. Ціла частина мантиси в пам’яті не буде відображуватись.

На рис. 4, 5, 6 і 7 та в таблиці 3, а також далі по тексту мантиса вважається нормалізованою.

Таким чином, для A2 = –11110.001 тепер матимемо таке.

Нормалізованою мантисою числа буде mа = 0.11110001, порядок числа ра = 510 (1012). Число від’ємне, тому в поле знака числа вписуємо ′1′. Порядок числа додатний, тому в поле знака порядку вписуємо ′0′.

Результат подання числа A10 = –30.125 у наочному форматі з плаваючою комою наведений на рис. 4. Аналогічно на рис. 4 подане число В10 = +6.22 (В2 = +110. 00111 – з точністю до п’яти знаків після коми у двійковому коді).

Число2 Знак порядку2 Порядок2 Знак числа2 Мантиса2
A2 = –11110.001
В2 = +110. 00111

 

Рисунок 4 – Наочний формат зображення двійкових чисел з плаваючою комою

 

4.3. Виконуємо операцію додавання

Виконати операцію додавання необхідно у відповідності з вимогами, наведеними в п. 3.4. Використаємо наочний формат зображення чисел з плаваючою комою, описаний в п. 4.2. Виконання операції додавання над числами A10 = –30.125 і В10 = –6.22 описане в п. 4.3.3 і в п. 4.3.4.

4.3.1. Нехай необхідно знайти С = А + В.

Спочатку вирівняємо порядки доданків.

Знаходимо різницю порядків: ра рв = 5 – 3 = 2.

Мантису числа В з меншим порядком зсуваємо з урахуванням різниці порядків, тобто на два розряди вліво, а значення порядку числа В збільшуємо на два (рис 5).

Число2 Знак порядку2 Порядок2 Знак числа2 Мантиса2
A2 = –11110.001
В2 = +110. 00111 0011000111

 

Рисунок 5 – Зображення чисел з вирівняним порядком

4.3.2. Вирівнюємо розрядну сітку мантис (вони повинні містити однакове число розрядів). Дописуємо до мантиси числа А два нулі справа (рис. 6).

Число2 Знак порядку2 Порядок2 Знак числа2 Мантиса2
A2 = –11110.001 1111000100
В2 = +110. 00111

 

Рисунок 6 – Зображення чисел з вирівняною розрядною сіткою мантис

4.3.3.Подаємо мантиси чисел А та В у машинних модифікованих кодах (табл. 3).

 

Таблиця 3 – Машинні модифіковані коди мантис чисел A2 та B2

Коди +ma –ma +mb –mb
Прямий 00,1111000100 11,1111000100 00,0011000111 11,0011000111
Зворотний 00,1111000100 11,0000111011 00,0011000111 11,1100111000
Додатковий 00,1111000100 11,0000111100 00,0011000111 11,1100111001

 

Символ ′,′ відділяє розряди знака від розрядів мантиси.

4.3.4. Виконуємо операцію додавання, використовуючи машинні модифіковані коди.

Операцію додавання мантис чисел A та В виконуємо за наступними правилами.

1. Правила додавання мантис дійсних чисел співпадають з правилами додавання цілих чисел;

2. Порядок результату співпадає з вирівняним порядком доданків;

3. Якщо з’ясується, що мантиса результату не нормалізована, то виконуються нормалізація мантиси і корекція значення порядку. Нормалізація мантиси результату виконується в двох випадках:

а) цифри в знакових розрядах мантиси не співпадають;

б) цифри в знакових розрядах однакові і співпадають з цифрою старшого розряду мантиси.

Якщо цифри в знакових розрядах мантиси не співпадають, то маємо переповнення розрядної сітки. Для усунення переповнення необхідно зсунути на один розряд вправо значення мантиси результату разом з правим знаковим розрядом та продублювати старший знаковий розряд.А порядок треба збільшитина одиницю, щоб зберегти числове значення результату.

Якщо цифри знакових розрядів мантиси однакові і співпадають з цифрою старшого розряду мантиси, то мантиса зсувається на один розряд вліво, а порядок зменшується на одиницю.

4. Отриманий при виконанні операції додавання результат в решті решт має бути поданий у прямому коді.

Для прикладу, виконаємо операцію додавання мантис в додатковому модифікованому коді для двох від’ємних чисел А та В (значення –ма та –мв наведені в табл. 3):

11,0000111100

+

11,1100111001

110,1101110101

Одиниця переносу при виконанні операції додавання в додатковому коді губиться.

При виконанні в прикладі операції додавання виникає переповнення розрядної сітки, про що свідчать різні двійкові цифри, а саме ′1′ і ′0′, у знакових розрядах. Для усунення переповнення зсунемо на один розряд вправо значення мантиси результату разом з правим знаковим розрядом та продублюємо старший знаковий розряд. А порядок збільшимона одиницю, щоб зберегти числове значення результату.

мс = 11,01101110101 рс = 5 + 1 = 610 à 1102.

 

Значення мантиси мс – від’ємне. Для переведення мантиси результату із додаткового коду в прямий, виконуємо інверсію та додаємо одиницю.

Отримаємо мс = 11,10010001011 (рис. 7):

Число2 Знак порядку2 Порядок2 Знак числа2 Мантиса2
С2 =–100100.01011

 

Рисунок 7 – Результат виконання операції додавання С = А + В

 

Переводимо результат в десятковий код:

С10 = –(1 ·25 + 1 ·22 + 1 ·2-2 + 1 ·2-4 + 1 ·2-5 = –(32 + 4 + 0.25 + 0.0625 +

+ 0.03125) = –36. 34375.

Слід мати на увазі, що часто через невелику кількість двійкових розрядів, виділених для зберігання мантиси, виникає похибка відтворення дробової частини результату в двійковій системі числення. Значення абсолютної похибки D відтворення числа X обчислюється по формулі:

D = XвихіднеXотримане ,

де Xвихідне– вихідне число, Xотримане – отримане число.

D = 36.345 36.34375 = 0.00125.

Значення відносної похибки d відтворення числа X обчислюється по формулі:

d = (D / Xвихідне)·100% .

d = (0.00125 / 36.345)· 100% = 0.00343%.

5. Перевірка за допомогою демонстраційної програми правильності результатів, отриманих під час виконання індивідуального завдання

5.1. Спочатку треба вручну отримати результати для свого індивідуального завдання, як це зроблено в прикладі із п.4.3.

5.2.Щоб перевірити правильність отриманих вручну результатів для свого варіанту за допомогою демонстраційної програми, текст якої розміщений нижче, треба запустити на виконання файл KL_LAB4_win32.exe (рис. 8) та ввести вхідні дані.

Рисунок 8 – Запуск на виконання демонстраційної програми

5.2.Отримати результат (рис. 9).

Отримані після запускання демонстраційної програми результати порівняти з результатами, отриманими вручну.

Слід зауважити, що в демонстраційний програмі під подання дійсного двійкового числа відведено 4 байти, тобто 32 біти. Для відтворення значення порядку відведено 7 розрядів, інші – для відтворення значення мантиси. Таким чином, точність виконання операції додавання в програмі буде вищою, ніж у прикладі, виконаному вручну.

 

Рисунок 9 – Результат роботи демонстраційної програми

6. Зміст звіту та вимоги до його оформлення наведені в лабораторній роботі 1.

Контрольні запитання

1. Скільки бітів в одному та двох байтах?

2. Чи враховується одиниця переносу із старшого знакового розряду під час виконання операції додавання у зворотному та додатковому кодах?

3. Подайте число А10 = 4.5 + N у стандартному форматі, який відповідає розміщенню числа у 4-байтовому полі , де N – номер за списком у журналі групи.

4. Подайте число А10 = 14.15 + N у наочному форматі, де N – номер за списком у журналі групи.

5. Особливості виконання операції додавання у модифікованих кодах при переповненні розрядної сітки.

 

 





sdamzavas.net - 2017 год. Все права принадлежат их авторам! В случае нарушение авторского права, обращайтесь по форме обратной связи...