Ноу Інти, лекція, типи даних

5.4. Арифметика плаваючою точки

Арифметика чисел з плаваючою точкою реалізує основні математичні операції і обчислення на комп'ютері. Завдяки наявності типів даних з плаваючою точкою коректно реалізуються операції ділення будь-яких чисел. Однак на деякі операції. як і на максимальні і мінімальні значення чисел, накладаються обмеження. Про ці обмеження буде сказано нижче.

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

5.4.1. Подання чисел з плаваючою точкою

Число з плаваючою точкою є дійсне число, яке має цілу частину і дробову частину, що представляє послідовність нулів і одиниць (тобто звичайні числа, що виходять в результаті вимірювання). У комп'ютері вони представляються у вигляді мантиси і порядку. Поняття мантиси і порядку дається в шостому класі курсу алгебри середньої школи. Нагадаємо його:

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

У першому прикладі мантиса дорівнює 0,123, а порядок відповідає числу 3. Разом отримали число 123. У другому прикладі мантиса дорівнює 0.25, а порядок - 10 (вийшло число 2 мільярди 500 мільйонів). Мантиса завжди задає точність, з якою представлені речові числа. Чим кількість розрядів в мантисі більше, тим вище точність розрахунку. У наведеному прикладі мантиса першого числа більше мантиси другого числа, хоча друге число значно більше першого. Порядок визначає "розряд", з якого починається "відлік" початку значення мантиси.

Подання чисел з плаваючою точкою в ЕОМ також відбувається за допомогою нулів і одиниць, однак їх формат відрізняється від формату цілих чисел (див. [40]). Схематично його можна представити таким чином:

Довжина ж машинного представлення чисел з плаваючою точкою дорівнює 4, 8 і 10 байт. При цьому число в регістрі довжиною 4 байта має тип float (або real), в регістрі довжиною 8 байт - double, в регістрі довжиною 10 байт - long double.

У таблиці 5.5 представлені максимальні і мінімальні значення, що приймаються числами з плаваючою точкою в регістрах з різною розрядністю. У таблиці 5.6 дається відповідність між розрядністю регістрів чисел з плаваючою точкою і їх позначеннях в мовах Quick Basic, Сі, C ++ і Java.

Таблиця 5.5. Мінімальні і максимальні значення чисел в регістрах з плаваючою точкою

5.4.2 Арифметика чисел з плаваючою точкою

З даними у вигляді чисел з плаваючою точкою можливі наступні операції:

  • складання;
  • віднімання;
  • множення;
  • розподіл;
  • зведення в ступінь;
  • знаходження залишку від ділення (не у всіх мовах);
  • зміна знака числа;
  • інкремент числа;
  • декремент числа;
  • відношення "більше" і "менше";
  • а також доступні інші алгебраїчні функції.

5.4.3. Особливі ситуації при роботі з числами з плаваючою точкою

Арифметика з плаваючою точкою має наступні програмні переривання:

  • поділ на нуль (divide by zero) - спроба ділення на нуль;
  • переповнення мантиси (overflow) - позитивне або негативне число в регістрі виходить за свої максимальні значення;
  • переповнення порядку - в результаті множення порядок перевищив своє максимальне або мінімальне значення;
  • зникнення порядку - обнуління мантиси при мінімальному значенні порядку.

Можливі й інші переривання.

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

5.5. резюме

Отже, після прослуховування цієї лекції Ви дізналися:

  • Існує два типи даних: "машинні" (які визначаються архітектурою обчислювальних машин) і "призначені для користувача" (певні системними і прикладними програмістами). Перший тип даних представлений в лекціях "Типи даних" і "Примітивні символьні дані"], другий - в "Інші типи даних" і "Змінні Perl". В даному описі не розглядаються класи - це прерогатива окремої теми.
  • Концепція "типів даних" реалізована в більшості "справжніх" мов програмування, але відсутня в "скриптових" мовах (мовах написання макросів).

У наступній лекції Ви познайомитеся з "примітивними символьними" даними.

5.6. глосарій

Схожі статті