- •1 Формулювання завдання
- •2 Представлення символьних знаків у вигляді ascii-коду та розміщення даних в пам’яті
- •3 Переведення чисел в десяткову та двійкову системи числення
- •4 Арифметичні операції з цілими числами в двійковому та шістнадцятковому кодах
- •5 Представлення даних в упакованому та неупакованому форматах
- •6 Виконання операцій над числами з плаваючою комою
- •Висновки
- •Список використаних джерел
6 Виконання операцій над числами з плаваючою комою
Використовувати числа із сталою комою часто буває зручно, проте при досить великих чи малих значеннях таких чисел їх розміщення в пам’яті стає не компактним. Тому часто використовуються числа з так званою плаваючою комою(ЧПК). Особливістю такого формату чисел є те, що останні представляються у вигляді мантиси, яка множиться на порядок числа. При цьому мантиса є нормалізованою (приведеною до стандартного вигляду).
Найбільше поширення в нас час отримав стандарт представлення ЧПК- IEEE-754. За правилами цього стандарту ЧПК можуть представлятися з допомогою 32-ох біт(число одинарної точності), 42-ох біт(розширене число одинарної точності), 64-ох та 80-ти біт(числа подвійної та розширеної подвійної точності відповідно). Як приклад можна розглянути формат одинарної точності, якому в мовах високого рівня відповідає тип float.
ЧПК одинарної точності представляються наступним чином: перший біт числа є знаковим і вказує на знак мантиси; наступні вісім біт вказують порядок числа із зміщенням на 128 одиниць (число нуль представляється, як 128); 23 біти, які залишилися відводяться на мантису. Потрібно зауважити, що в форматі IEEE-754 мантиса є дробовим числом, ціла частина якого рівна одиниці. До того ж при записі одиниця опускається, а записується тільки дробова частина.
Також великого поширення набуло формалізоване представлення ЧПК. Воно дещо відрізняється від стандарту IEEE-754.Особливості формалізованого представлення полягають у тому, що мантиса записується одразу після її знаку, а степінь розглядається теж як число із знаком. Структура ЧПК, представленого в формалізованому вигляді, одиночної довжини(32 біти): перший біт – біт знаку мантиси; двадцять три наступних біти – сама мантиса; двадцять п’ятий біт – біт знаку порядку; сім останніх бітів – значення порядку.
Враховуючи вище наведені правила можна записати числа А та В, як ЧПК одинарної точності в формалізованому вигляді. Проте для можливості проведення над ними арифметичних дій потрібно дещо змінити число В, задля наближення значення його порядку до значення порядку числа А. Зміна числа б полягає в заміні його молодшого байту(F2 hex) на нове значення(B2 hex).
Таким чином, числа А та В матимуть значення:
Число А можна розписати наступним чином:
– перший
біт, вказує на те, що число А - додатне;
-
мантиса
числа А;
-
двадцять п’ятий, вказує на те, що порядок
є від’ємним числом;
– значення
порядку числа А.
Як наслідок, число А можна представити в наступному вигляді:
Аналогічні маніпуляції можна виконати і з числом В.
– знак мантиси числа В;
– мантиса;
- знак порядку;
– порядок
числа В.
Як наслідок, число В можна представити у вигляді:
Арифметичні операції з ЧПК відбуваються для мантис та порядків окремо. Для виконання арифметичних операцій додавання та віднімання над ЧПК потрібно звести два числа до одного порядку. При зведенні варто збільшувати порядок меншого числа, оскільки зменшення порядку більшого числа може призвести до виходу із розрядної сітки. Сама ж операція зведення базується до зсуву мантиси меншого числа вправо на кількість біт, яка рівна різниці між порядками. Після виконання зсуву, порядки будуть однаковими.
Враховуючи наведені правила можна виконати зрівнювання порядків чисел А та В. Варто зазначити, що різниця між порядками рівна:
.
При цьому порядок числа А є меншим і над його мантисою потрібно виконати операцію зсуву вправо на 11 розрядів. Як наслідок, нове значення мантиси числа А матиме вигляд:
Очевидним стає те, що точність представлення числа А дещо зменшилась внаслідок втрати 11-ти молодших розрядів цього числа. Звідси випливає характерна ознака ЧПК – наближеність обчислень.
Після зрівняння порядків можна виконувати додавання та віднімання ЧПК А та В. Проте число В є від’ємним і більшим по модулю за число А, тому є необхідність представити мантису числа А в додатковому коді:
Виконання операції додавання А та В фактично буде операцією віднімання, оскільки В – від’ємне число. Тому додавання мантис чисел А та В показано на рисунку 6.1.
+ |
1. |
1111 |
1111 |
1111 |
0100 |
0000 |
110 |
0. |
0010 |
0111 |
0000 |
0011 |
0011 |
100 |
|
|
0. |
0010 |
0110 |
1111 |
0111 |
0100 |
010 |
Рисунок 6.1 – Виконання операції додавання мантис А та В
Таким чином результатом операції додавання буде від’ємне число С, яке можна записати наступним чином:
В базовому форматі ЧПК, з нормалізованою мантисою число С матиме вигляд:
Для виконання операції віднімання (А-В) необхідно використати мантиси в прямих кодах і здійснити операцію їх додавання, що і показано на рисунку 6.2.
+ |
0. |
0000 |
0000 |
0000 |
1011 |
1111 |
010 |
0. |
0010 |
0111 |
0000 |
0011 |
0011 |
100 |
|
|
0. |
0010 |
0111 |
0000 |
1111 |
0010 |
110 |
Рисунок 6.2 – Виконання віднімання мантис А та В (А-В)
Результатом віднімання буде додатне число D, яке можна записати наступним чином:
В базовому форматі ЧПК, з нормалізованою мантисою число С матиме вигляд:
Виконання операції множення має свої особливості, відмінні від додавання та віднімання. Для множення ЧПК потрібно окремо здійснювати дії над мантисами та порядками. Порядки при множенні додаються (зведення до спілного порядку не потрібне), а мантиси перемножуються згідно з правилами двійкової арифметики. Знак результуючого числа отримується шляхом додавання по модулю два бітів знаку множників.
Враховуючи наведені вище правила можна здійснити операцію множення чисел А та В:
А) порядок результуючого числа буде рівний:
+ |
011 |
1101 |
011 |
0010 |
|
|
110 |
1111 |
Б)множення мантис показане на рисунку 6.3.
|
|
|
|
|
|
0. |
0101 |
1111 |
1010 |
0011 |
1100 |
101 |
|
|
|
|
|
|
0. |
0010 |
0111 |
0000 |
0011 |
0011 |
100 |
|
|
|
|
|
|
001 |
0111 |
1110 |
1000 |
1111 |
0010 |
1 |
|
|
|
|
|
|
0010 |
1111 |
1101 |
0001 |
1110 |
0101 |
|
|
|
|
|
|
0 |
0101 |
1111 |
1010 |
0011 |
1100 |
101 |
|
|
|
|
|
|
0010 |
1111 |
1101 |
0001 |
1110 |
0101 |
|
|
|
|
|
|
0 |
0101 |
1111 |
1010 |
0011 |
1100 |
101 |
|
|
|
|
|
0010 |
1111 |
1101 |
0001 |
1110 |
0101 |
|
|
|
|
|
|
0 |
0101 |
1111 |
1010 |
0011 |
1100 |
101 |
|
|
|
|
|
|
00 |
1011 |
1111 |
0100 |
0111 |
1001 |
01 |
|
|
|
|
|
0 |
0101 |
1111 |
1010 |
0011 |
1100 |
101 |
|
|
|
|
|
0.0 |
0000 |
0111 |
0100 |
1001 |
1001 |
0011 |
1100 |
1110 |
1000 |
1001 |
0001 |
1 |
Рисунок 6.3 – Множення мантис чисел А та Б
Після скорочення довжини мантиси до необхідного значення та її нормалізації число E, яке являється результатом виконання операції множення, в форматі ЧПК запишеться наступним чином:
Як наслідок, було розглянуто особливості виконання операцій із ЧПК та досліджено властивості таких чисел.
