Основы объектно-ориентированного программирования на языке C# book | Page 103
6.8 Керування машинним зображенням чисел та особливостi виконання арифмет
Console.WriteLine("x1={0:E}", x1);
}
else
Console.WriteLine("no roots");
}
}
При завершеннi роботи програми ми одержимо, що x 1 = 0.00e+0,
x 2 = 5.0e+45 Пiдставивши цi значення до квадратного рiвняння, у
результатi дiстанемо 1.
6.8 Керування машинним зображенням
чисел та особливостi виконання
арифметичних операцiй
Спiвпроцесор майже завжди виконує всi операцiı̈ над дiйсними чи-
слами у спецiальному 80-бiтному форматi. Вiн має спецiальний ке-
руючий двобайтовий регiстр. Установлення окремих бiтiв регiстра
диктує спiвпроцесору ту чи iншу поведiнку. Його бiти вiдповiдають
за те, як будуть округлятися числа, як спiвпроцесор розумiє нескiн-
ченнiсть. Розглянемо тiльки два бiти регiстра – восьмий i дев’ятий.
Саме вони визначають, як оброблятимуться числа всерединi спiвпро-
цесора.
Якщо восьмий бiт мiстить одиницю (так установлено за умовча-
нням), то 10 байтiв внутрiшнiх регiстрiв спiвпроцесора використо-
вуватимуться повнiстю. Якщо ж цей бiт дорiвнює нулю, то все ви-
значається значенням дев’ятого бiта. Якщо вiн дорiвнює одиницi, то
використовуються 53 розряди мантиси (iншi завжди дорiвнюють ну-
лю). Якщо ж цей бiт дорiвнює нулю – то лише 24 розряди манти-
си. Це збiльшує швидкiсть обчислень, але зменшує точнiсть. Iншими
словами, точнiсть роботи спiвпроцесора може бути знижена до типу
double чи навiть float . Однак це стосується тiльки мантиси, порядок
завжди буде мiстити 15 бiтiв.
Сучаснi спiвпроцесори обробляють числа з такою швидкiстю, що
навряд чи в кого-небудь може виникнути необхiднiсть у прискореннi
за рахунок точностi. Проте це треба знати.
Ми вже зазначали, що властивiсть повноти не виконується при ма-
шинному зображеннi дiйсних чисел, оскiльки не кожен правильний
дрiб може бути зображений у виглядi скiнченного. Наприклад, 1/9
= 0.11111..., 1/3 = 0.333333... i т. д. При роботi з такими числами
використовується не точне, а наближене значення. Це потрiбно вра-
ховувати при написаннi програм.
103