є дане типу нескінченність, а іншим - дане одного з перших трьох типів, або обидва операнда мають тип нескінченність, то код результату визначають на підставі наступних загальноприйнятих правил наведених в табл.1.1.
При виконанні операцій з і з нулями існують особливі випадки. Наприклад, чи. У подібних особливих випадках результат виконання операції не є числом і для його представлення використаний тип не число (NaN).
Різниться два підтипи NaN-значень, - сигналізує і просте. Обидва підтипу у форматі з плаваючою точкою містять в полі порядку код 11 ... 1, а в полі мантиси код відмінний від нуля, який стандарт не регламентує.
Вибір кодів в поле мантиси для представлення простих і сигналізують NaN-значень виконує конструктор конкретної реалізації. Не слід використовувати біт знака числа як ознака для розпізнавання сигналізують або простих NaN-значень, так як операція зміни знака числа змінює знак NaN. Ознакою типу NaN-значень може служити, наприклад старший біт поля дробової частини мантиси.
У форматі повинні бути представлені хоча б одне сигналізує і хоча б одне просте NaN.
Обидва підтипи можуть бути результатами і операндами операції.
Поява в якості операнда арифметичної операції сигнализирующего NaN значення повинно генерувати виняткову ситуацію нездійсненне операція. Для цього конструктор проектує підсистему генерування виняткової ситуації з урахуванням обраних ним кодів для представлення сигналізують NaN.
Значення сигнализирующего NaN зручно привласнювати, наприклад неініціалізованих змінним, що дозволить при спробі виконати операцію з такою зміною перервати обчислення і видати повідомлення про цю подію. Кожна операція, передбачуваний результат якої є числом з плаваючою точкою, має видавати простий NaN як її результат, якщо при виконанні операції складається виняткова ситуація нездійсненне операція і обробка по перериванню не виконується.
Існують винятки з цього правила викликані тим, що деякі операції не дозволяють в результат записати NaN. Такими операціями є операції порівняння і пересилки, якщо пересилаються дані в довгому форматі в короткий формат або з формату з плаваючою крапкою в формат не має NaN. Ці операції при отриманні простого NaN на вході створюють ефект подібний сигнальним NaN.
Поява в якості операнда одного або пари простих NaN не повинно генерувати виняткову ситуацію. Результатом виконання операції буде просте NaN що є одним з вихідних. Таким чином, просте NaN передається по ланцюжку операцій в результат без проміжних повідомлень. Прості NaN, на розсуд розробника, повинні надавати ретроспективну діагностичну інформацію, отриману від невірних або недоступних (недійсних) даних і результатів.
Поширення діагностичної інформації вимагає, щоб інформація, що міститься в NaN, була передана в результат при виконанні арифметичних операцій і перетворення форматів з плаваючою крапкою.
.2 Запис чисел у формат з плаваючою точкою
Стандарт IEEE 754 зумовлює, що система запису числа в формат з плаваючою точкою отримує від користувача вказівку про спосіб округлення числа допомогою змінної Режим. Застосовують ті ж способи округлення дійсних чисел, що і при запису чисел у формат з фіксованою точкою, а саме:
- до найближчого числа;
- до нуля;
-до;
-до.
округлює нормалізовану мантиссу до точності формату подібно до того, як це роблять при округленні числа з фіксованою точкою (розділ 3.3.2).
Якщо мантиса вихідного числа дорівнює нулю, система запису записує в формат результату код нуля зі знаком вихідного числа.
Якщо відкидані при округленні розряди мантиси не рівні нулю, складається виняткова ситуація втрати точності.
Якщо зберігаються розряди мантиси до округлення рівні 1.11 ... 1 і при округленні необхідно збільшити мантиссу до найближчої більшої, то порядок збільшують на 1 і прінмаем мантиссу рівний 1.00 ... 0.
Якщо порядок нормалізованого та округленого числа, складається виняткова ситуація переповнення формату.
Якщо порядок нормалізованого та округленого числа і довжина ланцюжка нулів в молодших розрядах округленої мантиси незгірш від, то в формат результату записують ненормалізоване число з мантиси зрушеною вправо на розрядів.
Якщо порядок нормалізованого та округленого числа і довжина ланцюжка нулів в молодших розрядах округленої мантиси менше, складається виняткова ситуація втрати значущості. Врахуйте, що округлення округленого результату неприпустимо.
При відсутності виняткових ситуацій система запису відправляє округлений результат у форматі результату за призначенням.
.3 Віднімання чисел у форматі з плаваючою точкою
При виконанні операцій віднімання необхідні наступні дії:
<...