Основы объектно-ориентированного программирования на языке C# book | Page 99

6.7 Зображення дiйсних чисел знак числа порядок знак порядку мантиса b) з характеристикою: знак числа характеристика мантиса Введення характеристики не вимагає видiлення одного бiта для знака порядку i спрощує виконання операцiй порiвняння (<,>,≤,≥) та арифметичних операцiй над дiйсними числами. Найрозповсюдженiшим способом реалiзацiı̈ дiйсних чисел у комп’ю- терi є використання зображення з характеристикою, що отримується з порядку додаванням такого зсуву, щоб характеристика була пози- тивною. Нехай, наприклад, на характеристику видiляється 8 бiтiв. У 8 розрядах вмiщуються двiйковi числа вiд 00000000 до 11111111 (вiд 0 до 255 – у десятковiй системi). Усього маємо 256 значень. Розумно цi значення порiвну розподiлити мiж вiд’ємними й додатними значення- ми порядку числа: вiд –127 до 128. Мiнiмальному значенню порядку має вiдповiдати нульове значення характеристики. Отже, отримуємо змiщення, що дорiвнює 127. Для обчислення iстинного порядку числа можна використовувати формулу x = 2 n−1 + k + p, де n – кiлькiсть бiтiв, вiдведених для характеристики; p – порядок числа; k – попра- вочний коефiцiєнт фiрми IBM, рiвний −1 (табл. 6.6). Тип Характеристика Кiлькiсть бiтiв на характеристику float x = 2 7 + p − 1 double x = 2 10 + p − 1 8 11 Табл. 6.6: Характеристика. Для простоти розглянемо тип float , оскiльки вiн найкоротший. Зображення iнших типiв вiдрiзняються вiд нього тiльки кiлькiсно. Зауважимо, що в процесорах Intel байти у багатобайтових значеннях переставляються так, що молодший iде першим, а старший – остан- нiм. У мантисi зберiгається двiйкове цiле число. Щоб одержати iстинне значення мантиси, до неı̈ треба умовно додати лiворуч одиницю з кра- пкою. Таким чином, маючи 23 двiйкових розряди, ми записуємо числа з точнiстю до 24 двiйкових розрядiв. Це пов’язано з тим, що викори- стовується нормалiзоване зображення дiйсного числа. Нормалiзацiя означає, що мантиса (для двiйкового зображення), крiм випадку, ко- ли вона дорiвнює 0, має знаходитися в iнтервалi 2 −1 ≤ M < 1. 99