logo
AOM / Мельник А

6.6.1. Перетворення даних із формату з фіксованою у формат з рухомою комою та навпаки

Для перетворення даних із формату з фіксованою у формат з рухомою комою та на­впаки спочатку мають бути визначені параметри форматів представлення даних, напри­клад, це перетворення даних із формату з одинарною точністю за стандартом ІЕЕЕ-754 до 32-розрядного формату з фіксованою комою.

При перетворенні даних із формату з фіксованою у формат з рухомою комою потріб­но привести мантису до прийнятого в форматі з рухомою комою діапазону (за стандар­том ІЕЕЕ-754 зробити її нормалізованою), та забезпечити обчислення порядку з тим, щоб не змінилося значення числа. Потрібно відзначити, що будь-яке число в форматі з фік­сованою комою може бути представлено в форматі з рухомою комою. При цьому, якщо розрядність цього числа менша або рівна розрядності мантиси, воно буде представлено точно, якщо ж більша - наближено, оскільки частина молодших розрядів буде втрачена.

При перетворенні даних із формату з рухомою у формат з фіксованою комою по­трібно привести мантису до прийнятого в форматі з фіксованою комою діапазону при зведенні порядку до нульового значення з тим, щоб не змінилося значення числа.

Розглянемо кілька прикладів.

Нехай потрібно перетворити ціле число X= 7910 = 10011112, яке представлене в двій­ковій формі в доповняльному 16-розрядному коді, як показано на рис. 6.24, у формат з рухомою комою розрядністю п=16 = m+k,де к=6 - розрядність порядку, а m=10 - роз­рядність мантиси.

Значення порядку числа визначається з виразу Еx= Px+D, (D= 2k-1 = 32). Тут Рx=n-1 - початкове значення порядку, рівне розрядності числа з фіксованою комою без враху­вання знакового розряду, D- зміщення порядку. Тобто початкове значення експоненти рівне Е = 32+15 = 1011112 . Послідовність перетворення даних із формату з фіксованою у формат з рухомою комою показана в табл. 6.12.

Таблиця 6.12

Номер такту

Мантиса

Експонента

0

0,000000001001111

101111

1

0,000000010011110

101110

230

2

0,000000100111100

101101

3

0,000001001111000

101100

4

0,000010011110000

101011

5

0,000100111100000

101010

6

0,001001111000000

101001

7

0,010011110000000

101000

8

0,100111100000000

100111

Таким чином, елементи числа з рухомою комою визначені. Його значення в заданих межах представлено на рис. 6.25.

Для перевірки правильності результату перетворимо показане на рис. 6.25 число в десяткове:

Нехай потрібно перетворити число Х=-3276810 = -10000000000000002 в формат з ру­хомою комою в тій самій розрядній сітці n= 16 = m+k,де к=6 - розрядність порядку, а m=10 - розрядність мантиси.

Двійковий еквівалент перетворюваного числа в 16-розрядній сітці з фіксованою ко­мою в доповняльному коді має вигляд, показаний на рис. 6.26.

Значення порядку числа визначається з виразу Ех = Рх+D (D = 2k-1 = 32). Тобто по­чаткове значення експоненти рівне Е = 32+15 = 1011112 . Як видно з рис. 6.26, тут до­статньо зсунути перетворюване число на один розряд праворуч, і, тим самим, отримати нормалізовану мантису, залишивши на місці знаковий розряд, та додати до початкового значення порядку одиницю. Тобто при від'ємному значенні мантиса зсувається право­руч, а до порядку добавляється одиниця. Таким чином, елементи числа з рухомою комою визначені. Його значення в заданих межах представлено на рис. 6.27.

Для перевірки вірності результату перетворимо показане на рис. 6.27 число в десят­ кове: v

X= -0,1.248-32 = - 1000000000 000000,0 (2) = - 32768 (10).

231