Добавил:
інстаграм _roman.kob, курсові роботи з тєрєхова в.в. для КІ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Комп.логіка (лаб.метод)2016 розраха.docx
Скачиваний:
27
Добавлен:
31.05.2020
Размер:
426.54 Кб
Скачать

Кодування дійсних чисел

Дещо інший спосіб застосовується для подання в пам'яті персонального комп'ютера дійсних чисел. Розглянемо подання величин з плаваючою крапкою.

Будь-яке дійсне число можна записати у стандартному вигляді M × 10p, де 1 £ M <10, p - ціле. Наприклад, 120100000 = 1,201 × 108. Оскільки кожна позиція десяткового числа відрізняється від сусідньої на ступінь числа 10, множення на 10 еквівалентне зсуву десяткової коми на одну позицію вправо. Аналогічно ділення на 10 зсовує десяткову кому на позицію вліво. Тому наведений вище приклад можна продовжити: 120100000 = 1,201 × 108 = 0,1201 × 109 = 12,01 × 107. Десяткова кома "плаває" в числі і більше не позначає абсолютне місце між цілою і дробовою частинами.

У наведеній вище записи M називають мантиси числа, а p - його порядком. Для того щоб зберегти максимальну точність, обчислювальні машини майже завжди зберігають мантису в нормалізованому вигляді, що означає, що мантиса в даному випадку є число, що лежить між 110 і 210 (1 £ M <2). Основою системи числення тут, як уже зазначалося вище, - число 2. Спосіб зберігання мантиси з плаваючою точкою має на увазі, що двійкова кома знаходиться на фіксованому місці. Фактично мається на увазі, що двійкова кома слідує після першої двійкової цифри, тобто нормалізація мантиси робить одиничним перший біт, поміщаючи тим самим значення між одиницею та двійкою. Місце, відведене для числа з плаваючою крапкою, ділиться на два поля. Одне поле містить знак і значення мантиси, а інше містить знак і значення порядку.

Сучасний персональний комп'ютер дозволяє працювати з такими типами дійсними (діапазон значень вказаний по абсолютній величині; в деяких випадках перелік типів даних може бути розширений):

Тип

Діапазон

Кількість байтів

Single

1,5×10-45..3,4×1038

4

Double

5,0×10-324..1,7×10308

8

Double Extended

3,4×10-4932..1,1×104932

10

Покажемо перетворення дійсного числа для представлення його в пам'яті ЕОМ на прикладі величини типу Double.

Як видно з таблиці, величина цього типу займає в пам'яті 8 байт. На малюнку нижче показано, як тут представлені поля мантиси і порядку (нумерація бітів здійснюється справа наліво):

S Зміщений порядок Мантиса

63 62. .52 51. .0

Можна помітити, що старший біт, відведений під мантису, має номер 51, тобто мантиса займає молодші 52 біти. Перед комою повинен стояти біт цілої частини мантиси, але оскільки вона завжди дорівнює 1, тут даний біт не потрібно і відповідний розряд відсутній в пам'яті (але він мається на увазі). Значення порядку зберігається тут не як ціле число, представлене в додатковому коді. Для спрощення обчислень і порівняння дійсних чисел значення порядку в ЕОМ зберігається у вигляді зміщеного числа, тобто до цього значення порядку перед записом його в пам'ять додається зсув. Зсув вибирається так, щоб мінімальне значення порядку дорівнювало нулю. Наприклад, для типу Double порядок займає 11 біт і має діапазон від 2-1023 до 21023, тому зміщення одно 102310 = 11111111112. Нарешті, біт з номером 63 вказує на знак числа.

Таким чином, з вищесказаного випливає наступний алгоритм для отримання представлення дійсного числа в пам'яті ЕОМ:

  1. перевести модуль даного числа в двійкову систему числення;

  2. нормалізувати двійкове число, тобто записати у вигляді M × 2p, де M - мантиса (її ціла частина дорівнює 12 і p - порядок, записаний в десятковій системі числення;

  3. додати до порядку зміщення і перевести зміщений порядок в двійкову систему числення;

  4. враховуючи знак заданого числа (0 - позитивне; 1 - негативне), виписати його подання в пам'яті ЕОМ.

Приклад. Запишемо код числа -312,3125.

Двійковий запис модуля цього числа має вид 1 0011 1000,0101.

Маємо 1 0011 1000,0101 = 1,001110000101 × 28.

Отримуємо зміщений порядок 8+1023=1031. Далі маємо 103110=100000001112

1 100 0000 0111 0011 1000 0101 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000

63 62 52 51 0

Очевидно, що більш компактно отриманий код треба записати таким чином: C07385000000000016

Приклад. Зворотній перехід від коду дійсного числа до самого числа.

Нехай задано код 3FEC60000000000016 або

0 011 1111 1110 1100 0110 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000

63 62 52 51 0

Це код додатнього числа, так як в розряді з номером 63 записано нуль. Порядок цього числа: 01111111110 = 102210; 1022 - 1023 = -1.

Число має вид 1,1100011 × 2-1 або 0,11100011. В десятковій системі числення отримуємо 0,88671875.

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

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

Суть модифікованих кодів полягає в тому, що до знакового розряду додається ще один розряд: "+" ставиться у відповідність 00; "-" ставиться у відповідність 11. Виникаючий в знакових розрядах перенос втрачається. В цілому ж модифікований доповнюючий код не відрізняється від простого доповнюючого. Як і у випадку простого оберненого коду, виникаюча одиниця переносу в знакових розрядах при додаванні чисел, представлених в модифікованому оберненому коді по ланцюгу циклічного переносу додається в молодший розряд цифрової частини числа. Неспівпадіння знакових розрядів після виконання операції вказує на факт наявності переповнення.

При цьому розрізняють два типу переповнювання:

- "01" - додатне

- "10" - від'ємне.

Завдання:

  1. Запишіть дату свого народження у форматі DDMM,PPPP (н/п, 1509,1991)

  2. Перетворіть дату народження в двійкову систему у форматі з фіксрваною комою (по правилах перетворення цілої і дробової частин. Дробову частину перетворювати з точністю до 4-ох знаків після коми).

  3. Записати отримане число у форматі з плаваючою комою.

  4. Записати дату у форматах Single, Double, Extended.

  5. Записати у двійковій формі текучу дату. Від дати народження відняти текучу дату. Операцію виконати у додатковому коді. Одержаний результат записати у форматі Double, а потім перетворити у десяткову систему.

  6. Оформити звіт з лабораторної роботи.

Приклад:

  1. 1509,1991

  2. 150910 = 101111001012; 0,199110 = 0,00112

1509,1991 = 10111100101,00112

  1. = 1,01111001010011*210

Single

Double,

Extended

Контрольні запитання:

  1. Охарактеризуйте основні способи представлення чисел в ЕОМ.'

  2. До яких мікрооперацій зводяться операції над числами в ЕОМ?

  3. Правила додавання чисел в позиційних системах числення.

  4. В чому полягає різниця між арифметичним і логічним зсувом?

  5. Які Ви знаєте види мікрооперації передач?

  6. В чому полягає мікрооперація перетворення коду?

  7. Що таке інвертування числа (двійкового, десяткового)?

http://otherreferats.allbest.ru/radio/00098319_0.html

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]